aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2003-02-05 12:29:15 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2003-02-05 12:29:15 +0100
commit4f6ae35d12e716c1b596cbe979066730be91fc58 (patch)
tree8869d5370251e1a12637976c0f2dc56ebedf89c4 /gcc/config
parent8acfdd43da580ac54e7c86334d24d2b3e8b2585e (diff)
downloadgcc-4f6ae35d12e716c1b596cbe979066730be91fc58.zip
gcc-4f6ae35d12e716c1b596cbe979066730be91fc58.tar.gz
gcc-4f6ae35d12e716c1b596cbe979066730be91fc58.tar.bz2
re PR rtl-optimization/8555 (ICE in gen_split_1231)
PR optimization/8555 * config/i386/i386.md (sse_mov?fcc split): Handle op2 == op3 case instead of aborting. * gcc.dg/20030204-1.c: New test. From-SVN: r62438
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386.md10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index ffb2153..a1eb241 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -17127,10 +17127,14 @@
op = simplify_gen_subreg (V2DFmode, operands[3], DFmode, 0);
emit_insn (gen_sse2_unpcklpd (op, op, op));
}
- /* If op2 == op3, op3 will be clobbered before it is used.
- This should be optimized out though. */
+
+ /* If op2 == op3, op3 would be clobbered before it is used. */
if (operands_match_p (operands[2], operands[3]))
- abort ();
+ {
+ emit_move_insn (operands[0], operands[2]);
+ DONE;
+ }
+
PUT_MODE (operands[1], GET_MODE (operands[0]));
if (operands_match_p (operands[0], operands[4]))
operands[6] = operands[4], operands[7] = operands[2];