diff options
author | James E Wilson <wilson@specifixinc.com> | 2004-02-20 01:20:33 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2004-02-19 17:20:33 -0800 |
commit | e0c34369b81d9334b04833c2fa7de08282b3929f (patch) | |
tree | 9cdd16fb37d04fb9ea3396afb55532a1d6e28e96 /gcc/config | |
parent | 325b439bbcb9eeacdbaaa6b68dfea0daf962ec70 (diff) | |
download | gcc-e0c34369b81d9334b04833c2fa7de08282b3929f.zip gcc-e0c34369b81d9334b04833c2fa7de08282b3929f.tar.gz gcc-e0c34369b81d9334b04833c2fa7de08282b3929f.tar.bz2 |
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
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.md | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7733681..abd7f3d 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 "#"; |