guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 360/437: Correct wrong check in simplify_stxi.


From: Andy Wingo
Subject: [Guile-commits] 360/437: Correct wrong check in simplify_stxi.
Date: Mon, 2 Jul 2018 05:14:54 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 5724068b1c851e6bdd46143feb5586afffd8990a
Author: Paulo Andrade <address@hidden>
Date:   Tue Feb 3 15:19:21 2015 -0200

    Correct wrong check in simplify_stxi.
    
        * lib/lightning.c: Correct wrong check in simplify_stxi.
        The test was incorrectly comparing the target register
        and the displacement offset. This was a time bomb bug,
        that would trigger in code like:
                stxi Im0 Rb0 Rt0
                stxi Im1 Rb1 Rt1
        if Rb0 == Rb1 && Rt0 == Rt1 && Im0 == Rt1, that is,
        the wrong check was Im0 == Rt1, instead of the supposed
        Im0 == Imm1 (that was what the code mean't to do). It
        was removing the second stxi assuming it was redundantly
        generated; as that is not uncommon pattern on
        translators generating jit.
---
 ChangeLog       | 15 +++++++++++++++
 lib/lightning.c |  2 +-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index d352f0c..0f6530d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2015-02-03 Paulo Andrade <address@hidden>
+
+       * lib/lightning.c: Correct wrong check in simplify_stxi.
+       The test was incorrectly comparing the target register
+       and the displacement offset. This was a time bomb bug,
+       that would trigger in code like:
+               stxi Im0 Rb0 Rt0
+               stxi Im1 Rb1 Rt1
+       if Rb0 == Rb1 && Rt0 == Rt1 && Im0 == Rt1, that is,
+       the wrong check was Im0 == Rt1, instead of the supposed
+       Im0 == Imm1 (that was what the code mean't to do). It
+       was removing the second stxi assuming it was redundantly
+       generated; as that is not uncommon pattern on
+       translators generating jit.
+
 2015-02-02 Paulo Andrade <address@hidden>
 
        * configure.ac, include/lightning/jit_private.h,
diff --git a/lib/lightning.c b/lib/lightning.c
index b9173b7..d22a95c 100644
--- a/lib/lightning.c
+++ b/lib/lightning.c
@@ -2790,7 +2790,7 @@ _simplify_stxi(jit_state_t *_jit, jit_node_t *prev, 
jit_node_t *node)
     /* check for redundant store after load */
     if (value->kind == jit_kind_code && value->code == node->code &&
        value->base.q.l == right && value->base.q.h == _jitc->gen[right] &&
-       node->w.w == value->disp.w) {
+       node->u.w == value->disp.w) {
        del_node(prev, node);
        return (1);
     }



reply via email to

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