From 5df90541c7b752e3092907b2dfd3a4e324537aaf Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Tue, 15 Jul 2003 13:42:39 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 38b86a7e0d1..744f15a9752 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-07-15 Kazu Hirata + + 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 PR optimization/11320 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e4a66228665..e314ba53c2f 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;