Commit 56b15099 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 0d6d338f
2012-02-27 Jakub Jelinek <jakub@redhat.com>
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.
PR tree-optimization/52376
* ipa-split.c (split_function): Ignore CLOBBER stmts.
......
......@@ -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));
}
......
2012-02-27 Jakub Jelinek <jakub@redhat.com>
PR target/52375
* gcc.target/arm/pr52375.c: New test.
* gcc.c-torture/compile/pr52375.c: New test.
2012-02-27 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* gfortran.dg/typebound_operator_9.f03: Skip on SPU.
......
/* PR target/52375 */
struct C { int c, d; };
unsigned
foo (struct C *p)
{
unsigned int b = 0, i;
for (i = 0; i < 64; i++)
b |= 0x80000000U >> p[i].c;
return b;
}
/* PR target/52375 */
/* { dg-do compile } */
/* { dg-require-effective-target arm_neon_ok } */
/* { dg-options "-march=armv7-a -mfloat-abi=hard -mfpu=neon -O -ftree-vectorize" } */
struct C { int c, d; };
unsigned
foo (struct C *p)
{
unsigned int b = 0, i;
for (i = 0; i < 64; i++)
b |= 0x80000000U >> p[i].c;
return b;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment