OSDN Git Service

* reload.c (push_secondary_reload): Accept empty-string for ALL_REGS.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Jul 2001 03:32:46 +0000 (03:32 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Jul 2001 03:32:46 +0000 (03:32 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44096 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reload.c

index b0525f8..19e715e 100644 (file)
@@ -1,5 +1,9 @@
 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,
        don't force the function address into a register.
        (expand_call, emit_library_call_value_1): Update callers.
index 03e5d21..b4d8212 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