* reload.c (push_secondary_reload): Accept empty-string for ALL_REGS.
authorRichard Henderson <rth@redhat.com>
Wed, 18 Jul 2001 03:32:46 +0000 (20:32 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 18 Jul 2001 03:32:46 +0000 (20:32 -0700)
From-SVN: r44096

gcc/ChangeLog
gcc/reload.c

index b0525f874a008665e3aa195027ac74a11dd2bddb..19e715e0583c2576da4c24685c04bf3d079473b4 100644 (file)
@@ -1,3 +1,7 @@
+2001-07-17  Richard Henderson  <rth@redhat.com>
+
+       * reload.c (push_secondary_reload): Accept empty-string for ALL_REGS.
+
 2001-07-17  Richard Henderson  <rth@redhat.com>
 
        * calls.c (prepare_call_address): New parameter SIBCALLP.  If true,
index 03e5d21e00b815da764067df22b8f484320538fd..b4d82128862e124a35721ec57b9480204e575532 100644 (file)
@@ -372,11 +372,18 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
         in operand 1.  Outputs should have an initial "=", which we must
         skip.  */
 
-      char insn_letter
-       = insn_data[(int) icode].operand[!in_p].constraint[in_p];
-      enum reg_class insn_class
-       = (insn_letter == 'r' ? GENERAL_REGS
-          : REG_CLASS_FROM_LETTER ((unsigned char) insn_letter));
+      enum reg_class insn_class;
+
+      if (insn_data[(int) icode].operand[!in_p].constraint[0] == 0)
+       insn_class = ALL_REGS;
+      else
+       {
+         char insn_letter
+           = insn_data[(int) icode].operand[!in_p].constraint[in_p];
+         insn_class
+           = (insn_letter == 'r' ? GENERAL_REGS
+              : REG_CLASS_FROM_LETTER ((unsigned char) insn_letter));
+       }
 
       if (insn_class == NO_REGS
          || (in_p