mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-15 18:20:42 +02:00
Correct misplaced check for already visited blocks
This commit is contained in:
parent
1bd169cfa3
commit
f42a251ff1
3 changed files with 15 additions and 6 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2013-10-30 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
|
* lib/jit_print.c: Do not crash if calling jit_print from
|
||||||
|
gdb before actually emitting code.
|
||||||
|
|
||||||
|
* lib/lightning.c: Correct misplaced check for already
|
||||||
|
visited blocks on conditional branches, what was preventing
|
||||||
|
proper merge live bit masks of forward blocks.
|
||||||
|
|
||||||
2013-10-30 Paulo Andrade <pcpa@gnu.org>
|
2013-10-30 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
* lib/jit_x86-cpu.c: Correct not properly tested case of using
|
* lib/jit_x86-cpu.c: Correct not properly tested case of using
|
||||||
|
|
|
@ -396,14 +396,14 @@ _jit_print(jit_state_t *_jit)
|
||||||
continue;
|
continue;
|
||||||
case jit_code_name:
|
case jit_code_name:
|
||||||
print_chr(' ');
|
print_chr(' ');
|
||||||
if (node->v.p)
|
if (node->v.p && _jitc->emit)
|
||||||
print_str(node->v.n->u.p);
|
print_str(node->v.n->u.p);
|
||||||
break;
|
break;
|
||||||
case jit_code_note:
|
case jit_code_note:
|
||||||
print_chr(' ');
|
print_chr(' ');
|
||||||
if (node->v.p)
|
if (node->v.p && _jitc->emit)
|
||||||
print_str(node->v.n->u.p);
|
print_str(node->v.n->u.p);
|
||||||
if (node->v.p && node->w.w)
|
if (node->v.p && _jitc->emit && node->w.w)
|
||||||
print_chr(':');
|
print_chr(':');
|
||||||
if (node->w.w)
|
if (node->w.w)
|
||||||
print_dec(node->w.w);
|
print_dec(node->w.w);
|
||||||
|
|
|
@ -1983,15 +1983,15 @@ _jit_update(jit_state_t *_jit, jit_node_t *node,
|
||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
block = _jitc->blocks.ptr + label->v.w;
|
block = _jitc->blocks.ptr + label->v.w;
|
||||||
if (bmp_tst(label->v.w))
|
|
||||||
continue;
|
|
||||||
bmp_set(label->v.w);
|
|
||||||
jit_regset_and(&ztmp, mask, &block->reglive);
|
jit_regset_and(&ztmp, mask, &block->reglive);
|
||||||
if (jit_regset_set_p(&ztmp)) {
|
if (jit_regset_set_p(&ztmp)) {
|
||||||
jit_regset_ior(live, live, &ztmp);
|
jit_regset_ior(live, live, &ztmp);
|
||||||
jit_regset_com(&ztmp, &ztmp);
|
jit_regset_com(&ztmp, &ztmp);
|
||||||
jit_regset_and(mask, mask, &ztmp);
|
jit_regset_and(mask, mask, &ztmp);
|
||||||
}
|
}
|
||||||
|
if (bmp_tst(label->v.w))
|
||||||
|
continue;
|
||||||
|
bmp_set(label->v.w);
|
||||||
if (jit_regset_set_p(mask) == 0)
|
if (jit_regset_set_p(mask) == 0)
|
||||||
return;
|
return;
|
||||||
/* restore mask if branch is conditional */
|
/* restore mask if branch is conditional */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue