]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
sel-sched.c (mark_unavailable_hard_regs): Do not try to search available registers...
authorAlexander Monakov <amonakov@ispras.ru>
Thu, 14 Jan 2010 11:13:36 +0000 (14:13 +0300)
committerAlexander Monakov <amonakov@gcc.gnu.org>
Thu, 14 Jan 2010 11:13:36 +0000 (14:13 +0300)
2010-01-14  Alexander Monakov  <amonakov@ispras.ru>

* sel-sched.c (mark_unavailable_hard_regs): Do not try to search
available registers when failed to discover LHS register class.
Fix indentation.  Update comment.

From-SVN: r155896

gcc/ChangeLog
gcc/sel-sched.c

index 1f9b351d4b180896fc954c02567ae53fe528a1c2..56375a97b471c3abf592fa5d4ae5a1b9c2dab5cc 100644 (file)
@@ -1,3 +1,9 @@
+2010-01-14  Alexander Monakov  <amonakov@ispras.ru>
+
+       * sel-sched.c (mark_unavailable_hard_regs): Do not try to search
+       available registers when failed to discover LHS register class.
+       Fix indentation.  Update comment.
+
 2010-01-14  Andrey Belevantsev  <abel@ispras.ru>
            Alexander Monakov  <amonakov@ispras.ru>
 
index 1b8f47187a92ede2d9efbbe930a033518708fbb3..7fb08828b9761650d91efae79449a5e5e42fcdeb 100644 (file)
@@ -1229,19 +1229,19 @@ mark_unavailable_hard_regs (def_t def, struct reg_rename *reg_rename_p,
   if (!reload_completed && !HARD_REGISTER_NUM_P (regno))
     return;
 
-  mode = GET_MODE (orig_dest);
+  if (reload_completed)
+    cl = get_reg_class (def->orig_insn);
 
-  /* Stop when mode is not supported for renaming.  Also can't proceed
-     if the original register is one of the fixed_regs, global_regs or
-     frame pointer.  */
+  /* Stop if the original register is one of the fixed_regs, global_regs or
+     frame pointer, or we could not discover its class.  */
   if (fixed_regs[regno]
       || global_regs[regno]
 #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
-       || (frame_pointer_needed && regno == HARD_FRAME_POINTER_REGNUM)
+      || (frame_pointer_needed && regno == HARD_FRAME_POINTER_REGNUM)
 #else
-       || (frame_pointer_needed && regno == FRAME_POINTER_REGNUM)
+      || (frame_pointer_needed && regno == FRAME_POINTER_REGNUM)
 #endif
-      )
+      || (reload_completed && cl == NO_REGS))
     {
       SET_HARD_REG_SET (reg_rename_p->unavailable_hard_regs);
 
@@ -1296,11 +1296,11 @@ mark_unavailable_hard_regs (def_t def, struct reg_rename *reg_rename_p,
 
   /* Leave regs as 'available' only from the current
      register class.  */
-  cl = get_reg_class (def->orig_insn);
-  gcc_assert (cl != NO_REGS);
   COPY_HARD_REG_SET (reg_rename_p->available_for_renaming,
                      reg_class_contents[cl]);
 
+  mode = GET_MODE (orig_dest);
+
   /* Leave only registers available for this mode.  */
   if (!sel_hrd.regs_for_mode_ok[mode])
     init_regs_for_mode (mode);