From e0c34369b81d9334b04833c2fa7de08282b3929f Mon Sep 17 00:00:00 2001
From: James E Wilson <wilson@specifixinc.com>
Date: Fri, 20 Feb 2004 01:20:33 +0000
Subject: [PATCH] Fix latent problem found by Mostafa Hagog.

	* 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           | 6 ++++++
 gcc/config/i386/i386.md | 6 ++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 757d529ec0fb..79022e821806 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
 
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 77336814934b..abd7f3dd7739 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -13468,12 +13468,14 @@
 			  (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 "#";
-- 
GitLab