diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-02-02 14:23:43 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-02-02 14:23:43 +0100 |
commit | eca72963aad838236301cfed220a41f8b4fa6b60 (patch) | |
tree | a1aa96b3278b1c873c7432d2ad53d27e983ec85a /gcc/testsuite | |
parent | 43014633b0b9f0e3d2646b6c4ecd75d3830a18b2 (diff) | |
download | gcc-eca72963aad838236301cfed220a41f8b4fa6b60.zip gcc-eca72963aad838236301cfed220a41f8b4fa6b60.tar.gz gcc-eca72963aad838236301cfed220a41f8b4fa6b60.tar.bz2 |
re PR inline-asm/39058 (ICE with double in inline-asm)
PR inline-asm/39058
* recog.h (asm_operand_ok): Add constraints argument.
* recog.c (asm_operand_ok): Likewise. If it is set, for digits
recurse on matching constraint.
(check_asm_operands): Pass constraints as 3rd argument to
asm_operand_ok. Don't look up matching constraint here.
* stmt.c (expand_asm_operands): Pass NULL as 3rd argument
to asm_operand_ok.
* gcc.target/i386/pr39058.c: New test.
From-SVN: r143867
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr39058.c | 34 |
2 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c659971a..828af3f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -4,6 +4,9 @@ (check_effective_target_correct_iso_cpp_string_wchar_protos): New. * g++.dg/ext/builtin10.C: New test. + PR inline-asm/39058 + * gcc.target/i386/pr39058.c: New test. + 2009-02-02 Richard Guenther <rguenther@suse.de> PR tree-optimization/38937 diff --git a/gcc/testsuite/gcc.target/i386/pr39058.c b/gcc/testsuite/gcc.target/i386/pr39058.c new file mode 100644 index 0000000..2982e8d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr39058.c @@ -0,0 +1,34 @@ +/* PR inline-asm/39058 */ +/* { dg-options "-O2" } */ + +double +f1 () +{ + double x; + asm ("" : "=r,r" (x) : "0,0" (x)); + return x; +} + +double +f2 () +{ + double x; + asm ("" : "=r" (x) : "0" (x)); + return x; +} + +double +f3 () +{ + double x, y; + asm ("" : "=r,r" (x), "=r,r" (y) : "%0,0" (x), "r,r" (0)); + return x; +} + +double +f4 () +{ + double x, y; + asm ("" : "=r" (x), "=r" (y) : "0" (x), "r" (0)); + return x; +} |