Fix problem noticed by Dale Johannesen on the gcc list.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Oct 2003 01:40:48 +0000 (01:40 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Oct 2003 01:40:48 +0000 (01:40 +0000)
* recog.c (asm_operand_ok): Add missing break after case 'X'.
Change if statements to else if statements in default case.
(extract_constrain_insn_cached): Fix misspelling of constrain_operands
in comment.
(constrain_operands_cached): Likewise.
(constrain_operands): Change if statements to else if statements in
default case.
* reload.c (find_reloads): Likewise.

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

gcc/ChangeLog
gcc/recog.c
gcc/reload.c

index dbb059e..6d6b39f 100644 (file)
@@ -1,3 +1,14 @@
+2003-10-29  James E Wilson  <wilson@specifixinc.com>
+
+       * recog.c (asm_operand_ok): Add missing break after case 'X'.
+       Change if statements to else if statements in default case.
+       (extract_constrain_insn_cached): Fix misspelling of constrain_operands
+       in comment.
+       (constrain_operands_cached): Likewise.
+       (constrain_operands): Change if statements to else if statements in
+       default case.
+       * reload.c (find_reloads): Likewise.
+
 2003-10-29  Richard Henderson  <rth@redhat.com>
 
        * config/m68k/m68k.c (notice_update_cc): Clear cc status for
index 02ae71d..3c67bd8 100644 (file)
@@ -1746,6 +1746,7 @@ asm_operand_ok (rtx op, const char *constraint)
 
        case 'X':
          result = 1;
+         break;
 
        case 'g':
          if (general_operand (op, VOIDmode))
@@ -1764,20 +1765,16 @@ asm_operand_ok (rtx op, const char *constraint)
                result = 1;
            }
 #ifdef EXTRA_CONSTRAINT_STR
-         if (EXTRA_CONSTRAINT_STR (op, c, constraint))
+         else if (EXTRA_CONSTRAINT_STR (op, c, constraint))
+           result = 1;
+         else if (EXTRA_MEMORY_CONSTRAINT (c, constraint)
+                  /* Every memory operand can be reloaded to fit.  */
+                  && memory_operand (op, VOIDmode))
+           result = 1;
+         else if (EXTRA_ADDRESS_CONSTRAINT (c, constraint)
+                  /* Every address operand can be reloaded to fit.  */
+                  && address_operand (op, VOIDmode))
            result = 1;
-         if (EXTRA_MEMORY_CONSTRAINT (c, constraint))
-           {
-             /* Every memory operand can be reloaded to fit.  */
-             if (memory_operand (op, VOIDmode))
-               result = 1;
-           }
-         if (EXTRA_ADDRESS_CONSTRAINT (c, constraint))
-           {
-             /* Every address operand can be reloaded to fit.  */
-             if (address_operand (op, VOIDmode))
-               result = 1;
-           }
 #endif
          break;
        }
@@ -1970,7 +1967,7 @@ extract_insn_cached (rtx insn)
   extract_insn (insn);
   recog_data.insn = insn;
 }
-/* Do cached extract_insn, constrain_operand and complain about failures.
+/* Do cached extract_insn, constrain_operands and complain about failures.
    Used by insn_attrtab.  */
 void
 extract_constrain_insn_cached (rtx insn)
@@ -1980,7 +1977,7 @@ extract_constrain_insn_cached (rtx insn)
       && !constrain_operands (reload_completed))
     fatal_insn_not_found (insn);
 }
-/* Do cached constrain_operand and complain about failures.  */
+/* Do cached constrain_operands and complain about failures.  */
 int
 constrain_operands_cached (int strict)
 {
@@ -2535,27 +2532,20 @@ constrain_operands (int strict)
                  else if (EXTRA_CONSTRAINT_STR (op, c, p))
                    win = 1;
 
-                 if (EXTRA_MEMORY_CONSTRAINT (c, p))
-                   {
-                     /* Every memory operand can be reloaded to fit.  */
-                     if (strict < 0 && GET_CODE (op) == MEM)
-                       win = 1;
-
-                     /* Before reload, accept what reload can turn into mem.  */
-                     if (strict < 0 && CONSTANT_P (op))
-                       win = 1;
-
-                     /* During reload, accept a pseudo  */
-                     if (reload_in_progress && GET_CODE (op) == REG
-                         && REGNO (op) >= FIRST_PSEUDO_REGISTER)
-                       win = 1;
-                   }
-                 if (EXTRA_ADDRESS_CONSTRAINT (c, p))
-                   {
-                     /* Every address operand can be reloaded to fit.  */
-                     if (strict < 0)
-                       win = 1;
-                   }
+                 else if (EXTRA_MEMORY_CONSTRAINT (c, p)
+                          /* Every memory operand can be reloaded to fit.  */
+                          && ((strict < 0 && GET_CODE (op) == MEM)
+                              /* Before reload, accept what reload can turn
+                                 into mem.  */
+                              || (strict < 0 && CONSTANT_P (op))
+                              /* During reload, accept a pseudo  */
+                              || (reload_in_progress && GET_CODE (op) == REG
+                                  && REGNO (op) >= FIRST_PSEUDO_REGISTER)))
+                   win = 1;
+                 else if (EXTRA_ADDRESS_CONSTRAINT (c, p)
+                          /* Every address operand can be reloaded to fit.  */
+                          && strict < 0)
+                   win = 1;
 #endif
                  break;
                }
index 59852ba..06bb3fb 100644 (file)
@@ -3264,17 +3264,18 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
                          win = 1;
                        /* If the address was already reloaded,
                           we win as well.  */
-                       if (GET_CODE (operand) == MEM && address_reloaded[i])
+                       else if (GET_CODE (operand) == MEM
+                                && address_reloaded[i])
                          win = 1;
                        /* Likewise if the address will be reloaded because
                           reg_equiv_address is nonzero.  For reg_equiv_mem
                           we have to check.  */
-                       if (GET_CODE (operand) == REG
-                           && REGNO (operand) >= FIRST_PSEUDO_REGISTER
-                           && reg_renumber[REGNO (operand)] < 0
-                           && ((reg_equiv_mem[REGNO (operand)] != 0
-                                && EXTRA_CONSTRAINT_STR (reg_equiv_mem[REGNO (operand)], c, p))
-                               || (reg_equiv_address[REGNO (operand)] != 0)))
+                       else if (GET_CODE (operand) == REG
+                                && REGNO (operand) >= FIRST_PSEUDO_REGISTER
+                                && reg_renumber[REGNO (operand)] < 0
+                                && ((reg_equiv_mem[REGNO (operand)] != 0
+                                     && EXTRA_CONSTRAINT_STR (reg_equiv_mem[REGNO (operand)], c, p))
+                                    || (reg_equiv_address[REGNO (operand)] != 0)))
                          win = 1;
 
                        /* If we didn't already win, we can reload