guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 257/437: Correct misplaced check for already visited blo


From: Andy Wingo
Subject: [Guile-commits] 257/437: Correct misplaced check for already visited blocks
Date: Mon, 2 Jul 2018 05:14:32 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit f42a251ff14e14d44f9cdb07be58cd5b1149452b
Author: pcpa <address@hidden>
Date:   Tue Oct 1 13:51:01 2013 -0300

    Correct misplaced check for already visited blocks
---
 ChangeLog       | 9 +++++++++
 lib/jit_print.c | 6 +++---
 lib/lightning.c | 6 +++---
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 60851b3..351166b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2013-10-30 Paulo Andrade <address@hidden>
 
+       * 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 <address@hidden>
+
        * lib/jit_x86-cpu.c: Correct not properly tested case of using
        %r12 as index register, what was causing an invalid assertion.
        %r12 is mapped to the "extra" JIT_R3 register, and test cases
diff --git a/lib/jit_print.c b/lib/jit_print.c
index a5cdc21..17d2559 100644
--- a/lib/jit_print.c
+++ b/lib/jit_print.c
@@ -396,14 +396,14 @@ _jit_print(jit_state_t *_jit)
            continue;
            case jit_code_name:
                print_chr(' ');
-               if (node->v.p)
+               if (node->v.p && _jitc->emit)
                    print_str(node->v.n->u.p);
                break;
            case jit_code_note:
                print_chr(' ');
-               if (node->v.p)
+               if (node->v.p && _jitc->emit)
                    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(':');
                if (node->w.w)
                    print_dec(node->w.w);
diff --git a/lib/lightning.c b/lib/lightning.c
index e6c7f4b1..635a201 100644
--- a/lib/lightning.c
+++ b/lib/lightning.c
@@ -1983,15 +1983,15 @@ _jit_update(jit_state_t *_jit, jit_node_t *node,
                            goto restart;
                        }
                        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);
                        if (jit_regset_set_p(&ztmp)) {
                            jit_regset_ior(live, live, &ztmp);
                            jit_regset_com(&ztmp, &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)
                            return;
                        /* restore mask if branch is conditional */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]