* ira-color.c (allocno_reload_assign): Avoid accumulating
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Apr 2010 18:22:14 +0000 (18:22 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Apr 2010 18:22:14 +0000 (18:22 +0000)
        reload registers in ALLOCNO_TOTAL_CONFLICT_HARD_REGS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158524 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ira-color.c

index b21d8c5..18374f0 100644 (file)
@@ -1,3 +1,8 @@
+2010-04-19  Vladimir Makarov  <vmakarov@redhat.com>
+
+       * ira-color.c (allocno_reload_assign): Avoid accumulating
+       reload registers in ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
+
 2010-04-19  Martin Jambor  <mjambor@suse.cz>
 
        * gimple.h (create_tmp_reg): Declare.
index f507db1..e01a6ab 100644 (file)
@@ -2786,7 +2786,9 @@ allocno_reload_assign (ira_allocno_t a, HARD_REG_SET forbidden_regs)
   int hard_regno;
   enum reg_class cover_class;
   int regno = ALLOCNO_REGNO (a);
+  HARD_REG_SET saved;
 
+  COPY_HARD_REG_SET (saved, ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a));
   IOR_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), forbidden_regs);
   if (! flag_caller_saves && ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
     IOR_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), call_used_reg_set);
@@ -2830,7 +2832,7 @@ allocno_reload_assign (ira_allocno_t a, HARD_REG_SET forbidden_regs)
     }
   else if (internal_flag_ira_verbose > 3 && ira_dump_file != NULL)
     fprintf (ira_dump_file, "\n");
-
+  COPY_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), saved);
   return reg_renumber[regno] >= 0;
 }