PR rtl-optimization/43520
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Apr 2010 05:29:11 +0000 (05:29 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Apr 2010 05:29:11 +0000 (05:29 +0000)
* ira-lives.c (ira_implicitly_set_insn_hard_regs): Exclude classes with
zero available registers.

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

gcc/ChangeLog
gcc/ira-lives.c

index cdb7c2b..361121b 100644 (file)
@@ -1,3 +1,9 @@
+2010-04-20  James E. Wilson  <wilson@codesourcery.com>
+
+       PR rtl-optimization/43520
+       * ira-lives.c (ira_implicitly_set_insn_hard_regs): Exclude classes with
+       zero available registers.
+
 2010-04-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * builtins.c (fold_builtin_cproj): Fold more cases.
 
 2010-04-19  James E. Wilson  <wilson@codesourcery.com>
 
-       PR rtl-optimization/43520
        * config/ia64/ia64.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Make
        ar.lc fixed and call-used.
 
index 09316b5..7ced1a7 100644 (file)
@@ -805,6 +805,9 @@ ira_implicitly_set_insn_hard_regs (HARD_REG_SET *set)
                        ? GENERAL_REGS
                        : REG_CLASS_FROM_CONSTRAINT (c, p));
                  if (cl != NO_REGS
+                     /* There is no register pressure problem if all of the
+                        regs in this class are fixed.  */
+                     && ira_available_class_regs[cl] != 0
                      && (ira_available_class_regs[cl]
                          <= ira_reg_class_nregs[cl][mode]))
                    IOR_HARD_REG_SET (*set, reg_class_contents[cl]);