Commit d8d6ea53 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/60663 (Errors out on valid inline asm)

	PR rtl-optimization/60663
	* cse.c (cse_insn): Set src_volatile on ASM_OPERANDS in
	PARALLEL.

	* gcc.target/arm/pr60663.c: New test.

From-SVN: r209293
parent f8e6f6ba
2014-04-11 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/60663
* cse.c (cse_insn): Set src_volatile on ASM_OPERANDS in
PARALLEL.
2014-04-10 Jan Hubicka <hubicka@ucw.cz> 2014-04-10 Jan Hubicka <hubicka@ucw.cz>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
......
...@@ -4642,6 +4642,13 @@ cse_insn (rtx insn) ...@@ -4642,6 +4642,13 @@ cse_insn (rtx insn)
&& REGNO (dest) >= FIRST_PSEUDO_REGISTER) && REGNO (dest) >= FIRST_PSEUDO_REGISTER)
sets[i].src_volatile = 1; sets[i].src_volatile = 1;
/* Also do not record result of a non-volatile inline asm with
more than one result or with clobbers, we do not want CSE to
break the inline asm apart. */
else if (GET_CODE (src) == ASM_OPERANDS
&& GET_CODE (x) == PARALLEL)
sets[i].src_volatile = 1;
#if 0 #if 0
/* It is no longer clear why we used to do this, but it doesn't /* It is no longer clear why we used to do this, but it doesn't
appear to still be needed. So let's try without it since this appear to still be needed. So let's try without it since this
......
2014-04-11 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/60663
* gcc.target/arm/pr60663.c: New test.
2014-04-10 Jason Merrill <jason@redhat.com> 2014-04-10 Jason Merrill <jason@redhat.com>
* g++.dg/dso/dlclose1.C: Disable for 4.9. * g++.dg/dso/dlclose1.C: Disable for 4.9.
......
/* PR rtl-optimization/60663 */
/* { dg-do compile } */
/* { dg-options "-O2 -march=armv7-a" } */
int
foo (void)
{
unsigned i, j;
asm ("%0 %1" : "=r" (i), "=r" (j));
return i;
}
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