aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-02-02 14:23:43 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-02-02 14:23:43 +0100
commiteca72963aad838236301cfed220a41f8b4fa6b60 (patch)
treea1aa96b3278b1c873c7432d2ad53d27e983ec85a /gcc/testsuite
parent43014633b0b9f0e3d2646b6c4ecd75d3830a18b2 (diff)
downloadgcc-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/ChangeLog3
-rw-r--r--gcc/testsuite/gcc.target/i386/pr39058.c34
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;
+}