summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema/asm.c
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-04-18 13:23:23 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-04-18 13:23:23 +0000
commit7ee3b9c0e4bcfec216d87b8e1127f8dc8312b827 (patch)
tree49c0e2c8b95e65cfcbad9e70f31d004e28b8ef88 /clang/test/Sema/asm.c
parent1a6cfb46e5a8aea721dd637528113e5b52764105 (diff)
downloadbcm5719-llvm-7ee3b9c0e4bcfec216d87b8e1127f8dc8312b827.tar.gz
bcm5719-llvm-7ee3b9c0e4bcfec216d87b8e1127f8dc8312b827.zip
Reject asm output constraints that consist of modifiers only.
Fixes PR15759. llvm-svn: 179756
Diffstat (limited to 'clang/test/Sema/asm.c')
-rw-r--r--clang/test/Sema/asm.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/Sema/asm.c b/clang/test/Sema/asm.c
index 2c600854bf8..c81f16a3875 100644
--- a/clang/test/Sema/asm.c
+++ b/clang/test/Sema/asm.c
@@ -130,3 +130,19 @@ void test14(struct S *s) {
__asm("": : "a"(*s)); // expected-error {{dereference of pointer to incomplete type 'struct S'}}
__asm("": "=a" (*s) :); // expected-error {{dereference of pointer to incomplete type 'struct S'}}
}
+
+// PR15759.
+double test15() {
+ double ret = 0;
+ __asm("0.0":"="(ret)); // expected-error {{invalid output constraint '=' in asm}}
+ __asm("0.0":"=&"(ret)); // expected-error {{invalid output constraint '=&' in asm}}
+ __asm("0.0":"+?"(ret)); // expected-error {{invalid output constraint '+?' in asm}}
+ __asm("0.0":"+!"(ret)); // expected-error {{invalid output constraint '+!' in asm}}
+ __asm("0.0":"+#"(ret)); // expected-error {{invalid output constraint '+#' in asm}}
+ __asm("0.0":"+*"(ret)); // expected-error {{invalid output constraint '+*' in asm}}
+ __asm("0.0":"=%"(ret)); // expected-error {{invalid output constraint '=%' in asm}}
+ __asm("0.0":"=,="(ret)); // expected-error {{invalid output constraint '=,=' in asm}}
+ __asm("0.0":"=,g"(ret)); // no-error
+ __asm("0.0":"=g"(ret)); // no-error
+ return ret;
+}
OpenPOWER on IntegriCloud