diff options
| author | Jakub Jelinek <jakub@redhat.com> | 2012-02-27 16:53:15 +0100 |
|---|---|---|
| committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-02-27 16:53:15 +0100 |
| commit | 56b1509941fb4f73c7cdc81e541acba0d2d38d2a (patch) | |
| tree | 247a252395048e6449c77cf2815f2df2420cb8b6 /gcc/config | |
| parent | 0d6d338f5bf4846b4a5b11256b5ca506a9a5fdba (diff) | |
| download | gcc-56b1509941fb4f73c7cdc81e541acba0d2d38d2a.zip gcc-56b1509941fb4f73c7cdc81e541acba0d2d38d2a.tar.gz gcc-56b1509941fb4f73c7cdc81e541acba0d2d38d2a.tar.bz2 | |
re PR target/52375 (internal compiler error: in extract_insn, at recog.c:2123 at -O3 -mfpu=neon)
PR target/52375
* config/arm/neon.md (vashr<mode>3, vlshr<mode>3): Use
s_register_operand in the test instead of REG_P. Don't call
gen_reg_rtx if it won't be used.
* gcc.target/arm/pr52375.c: New test.
* gcc.c-torture/compile/pr52375.c: New test.
From-SVN: r184603
Diffstat (limited to 'gcc/config')
| -rw-r--r-- | gcc/config/arm/neon.md | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index a6c891d..e0d6a0c 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -1064,9 +1064,9 @@ (match_operand:VDQIW 2 "imm_rshift_or_reg_neon" "")))] "TARGET_NEON" { - rtx neg = gen_reg_rtx (<MODE>mode); - if (REG_P (operands[2])) + if (s_register_operand (operands[2], <MODE>mode)) { + rtx neg = gen_reg_rtx (<MODE>mode); emit_insn (gen_neg<mode>2 (neg, operands[2])); emit_insn (gen_ashl<mode>3_signed (operands[0], operands[1], neg)); } @@ -1081,9 +1081,9 @@ (match_operand:VDQIW 2 "imm_rshift_or_reg_neon" "")))] "TARGET_NEON" { - rtx neg = gen_reg_rtx (<MODE>mode); - if (REG_P (operands[2])) + if (s_register_operand (operands[2], <MODE>mode)) { + rtx neg = gen_reg_rtx (<MODE>mode); emit_insn (gen_neg<mode>2 (neg, operands[2])); emit_insn (gen_ashl<mode>3_unsigned (operands[0], operands[1], neg)); } |
