aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-02-27 16:53:15 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2012-02-27 16:53:15 +0100
commit56b1509941fb4f73c7cdc81e541acba0d2d38d2a (patch)
tree247a252395048e6449c77cf2815f2df2420cb8b6 /gcc/config
parent0d6d338f5bf4846b4a5b11256b5ca506a9a5fdba (diff)
downloadgcc-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.md8
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));
}