Fix latent problem found by Mostafa Hagog.
authorJames E Wilson <wilson@specifixinc.com>
Fri, 20 Feb 2004 01:20:33 +0000 (01:20 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 20 Feb 2004 01:20:33 +0000 (17:20 -0800)
* config/i386/i386.md (doloop_end_internal): Use nonimmediate_operand
for operand2.  Add condition that requires register_operand operand2
before reload.

From-SVN: r78140

gcc/ChangeLog
gcc/config/i386/i386.md

index 757d529ec0fb6f9745eeaa8a457c563e014dfae4..79022e8218061e5bba2b8a481b0ee93b9499713f 100644 (file)
@@ -1,3 +1,9 @@
+2004-02-19  James E Wilson  <wilson@specifixinc.com>
+
+       * config/i386/i386.md (doloop_end_internal): Use nonimmediate_operand
+       for operand2.  Add condition that requires register_operand operand2
+       before reload.
+
 2004-02-19  Richard Sandiford  <rsandifo@redhat.com>
            Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
 
index 77336814934b74d9010872e7528f2ac71168769b..abd7f3dd77394da4c30e8091de83dbd550a48de7 100644 (file)
                          (const_int 1))
                      (label_ref (match_operand 0 "" ""))
                      (pc)))
-   (set (match_operand:SI 2 "register_operand" "=1,1,*m*r")
+   (set (match_operand:SI 2 "nonimmediate_operand" "=1,1,*m*r")
        (plus:SI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:SI 3 "=X,X,r"))
    (clobber (reg:CC 17))]
-  "!TARGET_64BIT && TARGET_USE_LOOP"
+  "!TARGET_64BIT && TARGET_USE_LOOP
+   && (reload_in_progress || reload_completed
+       || register_operand (operands[2], VOIDmode))"
 {
   if (which_alternative != 0)
     return "#";