diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-04-11 12:11:01 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-04-11 12:11:01 +0200 |
commit | d8d6ea53a713ae30e8e4ccbe14ebec2002ce1f2c (patch) | |
tree | e221fee448df9eb7c97c417756159adfc787acd4 /gcc | |
parent | f8e6f6bad71813e122ecf566c01fab78c0930855 (diff) | |
download | gcc-d8d6ea53a713ae30e8e4ccbe14ebec2002ce1f2c.zip gcc-d8d6ea53a713ae30e8e4ccbe14ebec2002ce1f2c.tar.gz gcc-d8d6ea53a713ae30e8e4ccbe14ebec2002ce1f2c.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cse.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr60663.c | 11 |
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0aa9562..d702fae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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> Jakub Jelinek <jakub@redhat.com> @@ -4642,6 +4642,13 @@ cse_insn (rtx insn) && REGNO (dest) >= FIRST_PSEUDO_REGISTER) 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 /* 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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a8bf48f..c9dbd8a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +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> * g++.dg/dso/dlclose1.C: Disable for 4.9. diff --git a/gcc/testsuite/gcc.target/arm/pr60663.c b/gcc/testsuite/gcc.target/arm/pr60663.c new file mode 100644 index 0000000..b79b830 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr60663.c @@ -0,0 +1,11 @@ +/* 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; +} |