aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2003-07-15 13:42:39 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2003-07-15 13:42:39 +0000
commit5df90541c7b752e3092907b2dfd3a4e324537aaf (patch)
treec050ecd7a20c73b137bc340d107052020ed7a6ee /gcc
parentb5524f94977d65f8c84fc46ef383c5a439d6ec46 (diff)
downloadgcc-5df90541c7b752e3092907b2dfd3a4e324537aaf.zip
gcc-5df90541c7b752e3092907b2dfd3a4e324537aaf.tar.gz
gcc-5df90541c7b752e3092907b2dfd3a4e324537aaf.tar.bz2
re PR target/10795 (ICE in extract_insn, at recog.c:2188)
PR target/10795 * config/i386/i386.c (ix86_expand_carry_flag_compare): Don't swap comparison operands if doing so would generate an unrecognizable insn. From-SVN: r69407
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.c5
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 38b86a7..744f15a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2003-07-15 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR target/10795
+ * config/i386/i386.c (ix86_expand_carry_flag_compare): Don't
+ swap comparison operands if doing so would generate an
+ unrecognizable insn.
+
2003-07-15 Eric Botcazou <ebotcazou@libertysurf.fr>
PR optimization/11320
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index e4a6622..e314ba5 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -9383,6 +9383,11 @@ ix86_expand_carry_flag_compare (enum rtx_code code, rtx op0, rtx op1, rtx *pop)
return false;
code = (code == GTU ? GEU : LTU);
}
+ else if (!nonimmediate_operand (op1, mode)
+ || !general_operand (op0, mode))
+ /* Swapping operands in this case would generate an
+ unrecognizable insn. */
+ return false;
else
{
rtx tmp = op1;