In optimize_bytecode(), calculate bc->offset *before* calling bc_calc_len().

This is because calc_len may want to know the current bytecode's offset (eg for
determining relative displacement length).

svn path=/trunk/yasm/; revision=458
0.3
Peter Johnson 23 years ago
parent 66bf6be085
commit 760e3c4d11
  1. 2
      modules/optimizers/basic/basic-optimizer.c
  2. 2
      src/optimizers/basic/basic-optimizer.c

@ -89,12 +89,12 @@ basic_optimize_bytecode_1(bytecode *bc, void *d)
bc->opt_flags = BCFLAG_INPROGRESS;
bc_calc_len(bc, basic_optimize_resolve_label);
if (!*precbc)
bc->offset = 0;
else
bc->offset = (*precbc)->offset + (*precbc)->len;
*precbc = bc;
bc_calc_len(bc, basic_optimize_resolve_label);
bc->opt_flags = BCFLAG_DONE;

@ -89,12 +89,12 @@ basic_optimize_bytecode_1(bytecode *bc, void *d)
bc->opt_flags = BCFLAG_INPROGRESS;
bc_calc_len(bc, basic_optimize_resolve_label);
if (!*precbc)
bc->offset = 0;
else
bc->offset = (*precbc)->offset + (*precbc)->len;
*precbc = bc;
bc_calc_len(bc, basic_optimize_resolve_label);
bc->opt_flags = BCFLAG_DONE;

Loading…
Cancel
Save