Commit 3fea1a75 by Kyrylo Tkachov Committed by Kyrylo Tkachov

[AArch64] Restore recog state after finding pre-madd instruction

	* config/aarch64/aarch64.c (aarch64_madd_needs_nop): Restore
	recog state after aarch64_prev_real_insn call.

	* gcc.target/aarch64/madd_after_asm_1.c: New test.

From-SVN: r216852
parent a56561ac
2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.c (aarch64_madd_needs_nop): Restore
recog state after aarch64_prev_real_insn call.
2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.h (MACHMODE): Add 'enum' to machine_mode.
2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
......@@ -7770,6 +7770,10 @@ aarch64_madd_needs_nop (rtx_insn* insn)
return false;
prev = aarch64_prev_real_insn (insn);
/* aarch64_prev_real_insn can call recog_memoized on insns other than INSN.
Restore recog state to INSN to avoid state corruption. */
extract_constrain_insn_cached (insn);
if (!prev || !has_memory_op (prev))
return false;
......
2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/madd_after_asm_1.c: New test.
2014-10-29 DJ Delorie <dj@redhat.com>
* gcc.dg/20141029-1.c: New.
......
/* { dg-do assemble } */
/* { dg-options "-O2 -mfix-cortex-a53-835769" } */
int
test (int a, double b, int c, int d, int e)
{
double result;
__asm__ __volatile ("// %0, %1"
: "=w" (result)
: "0" (b)
: /* No clobbers */
);
return c * d + e;
}
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