dotgnu-pnet-commits
[Top][All Lists]
Advanced

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

[dotgnu-pnet-commits] libjit ChangeLog jit/jit-reg-alloc.c


From: Aleksey Demakov
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-reg-alloc.c
Date: Fri, 18 Aug 2006 18:14:28 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    libjit
Changes by:     Aleksey Demakov <avd>   06/08/18 18:14:28

Modified files:
        .              : ChangeLog 
        jit            : jit-reg-alloc.c 

Log message:
        fix a problem with the clobber flag being ignored

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.249&r2=1.250
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-reg-alloc.c?cvsroot=dotgnu-pnet&r1=1.37&r2=1.38

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.249
retrieving revision 1.250
diff -u -b -r1.249 -r1.250
--- ChangeLog   15 Aug 2006 01:08:59 -0000      1.249
+++ ChangeLog   18 Aug 2006 18:14:27 -0000      1.250
@@ -1,3 +1,9 @@
+2006-08-19  Aleksey Demakov  <address@hidden>
+
+       * jit/jit-reg-alloc.c (set_regdesc_flags): fix a problem with the
+       clobber flag being ignored. The problem was introduced by the patch
+       from 2006-06-17.
+
 2006-08-15  Thomas Cort  <address@hidden>
        * jit/jit-rules-alpha.c jit/jit-rules-alpha.h jit/jit-rules-alpha.ins
        Add a TODO() macro to print unimplemented warnings. Fix some 

Index: jit/jit-reg-alloc.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-reg-alloc.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- jit/jit-reg-alloc.c 29 Jul 2006 15:11:47 -0000      1.37
+++ jit/jit-reg-alloc.c 18 Aug 2006 18:14:27 -0000      1.38
@@ -2165,8 +2165,8 @@
 set_regdesc_flags(jit_gencode_t gen, _jit_regs_t *regs, int index)
 {
        _jit_regdesc_t *desc;
-       int reg, other_reg;
-       int clobber, stack_start;
+       int reg, other_reg, stack_start;
+       int clobber, clobber_input;
 
 #ifdef JIT_REG_DEBUG
        printf("set_regdesc_flags(index = %d)\n", index);
@@ -2199,6 +2199,18 @@
 
        /* See if the value clobbers the register it is assigned to. */
        clobber = clobbers_register(gen, regs, index, desc->reg, 
desc->other_reg);
+       if(jit_reg_is_used(regs->clobber, desc->reg))
+       {
+               clobber_input = 1;
+       }
+       else if(desc->other_reg >= 0 && jit_reg_is_used(regs->clobber, 
desc->other_reg))
+       {
+               clobber_input = 1;
+       }
+       else
+       {
+               clobber_input = (clobber & CLOBBER_INPUT_VALUE) != 0;
+       }
        if((clobber & CLOBBER_REG) != 0)
        {
                jit_reg_set_used(regs->clobber, desc->reg);
@@ -2235,7 +2247,7 @@
                                {
                                        if(desc->value != regs->descs[0].value)
                                        {
-                                               clobber |= CLOBBER_INPUT_VALUE;
+                                               clobber_input = 1;
                                        }
                                }
                        }
@@ -2305,7 +2317,7 @@
                {
                        if(desc->used)
                        {
-                               if(!desc->copy && (clobber & 
CLOBBER_INPUT_VALUE) != 0)
+                               if(!desc->copy && clobber_input)
                                {
                                        desc->save = 1;
                                        desc->kill = 1;
@@ -2324,7 +2336,7 @@
                {
                        if(desc->used)
                        {
-                               if((clobber & CLOBBER_INPUT_VALUE) != 0)
+                               if(clobber_input)
                                {
                                        desc->kill = 1;
                                }




reply via email to

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