guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 337/437: Remove a wrong optimization of callee save regi


From: Andy Wingo
Subject: [Guile-commits] 337/437: Remove a wrong optimization of callee save registers
Date: Mon, 2 Jul 2018 05:14:49 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit c95a356c1ad9e1d1dda43545f8b030f33a1155ae
Author: pcpa <address@hidden>
Date:   Mon Nov 24 12:40:32 2014 -0200

    Remove a wrong optimization of callee save registers
---
 ChangeLog       |  6 ++++++
 lib/lightning.c | 10 +---------
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c8b09e3..1fb41d3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-11-24 Paulo Andrade <address@hidden>
+
+       * lib/lightning.c: Remove an optimization to calee save
+       registers that may incorrectly remove a jit_movr under
+       special conditions.
+
 2014-11-20 Paulo Andrade <address@hidden>
 
        * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c,
diff --git a/lib/lightning.c b/lib/lightning.c
index 8f892da..5894db2 100644
--- a/lib/lightning.c
+++ b/lib/lightning.c
@@ -2855,12 +2855,12 @@ _simplify(jit_state_t *_jit)
     jit_node_t         *next;
     jit_int32_t                 info;
     jit_int32_t                 regno;
-    jit_int32_t                 offset;
 
     for (prev = NULL, node = _jitc->head; node; prev = node, node = next) {
        next = node->next;
        switch (node->code) {
            case jit_code_label:        case jit_code_prolog:
+           case jit_code_callr:        case jit_code_calli:
            reset:
                memset(_jitc->gen, 0, sizeof(jit_int32_t) * _jitc->reglen);
                memset(_jitc->values, 0, sizeof(jit_value_t) * _jitc->reglen);
@@ -2936,14 +2936,6 @@ _simplify(jit_state_t *_jit)
                if (simplify_stxi(prev, node))
                    simplify_spill(node = prev, regno);
                break;
-           case jit_code_callr:        case jit_code_calli:
-               for (offset = 0; offset < _jitc->reglen; offset++) {
-                   if (!(jit_class(_rvs[offset].spec) & jit_class_sav)) {
-                       _jitc->values[offset].kind = 0;
-                       ++_jitc->gen[offset];
-                   }
-               }
-               break;
            default:
                info = jit_classify(node->code);
                if (info & jit_cc_a0_jmp)



reply via email to

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