summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@apple.com>2014-09-18 18:17:18 +0000
committerAkira Hatanaka <ahatanaka@apple.com>2014-09-18 18:17:18 +0000
commit974131ea8825041673a8c8dda7c42f9a9376eb17 (patch)
tree39e922e630d9141febda031d35e6786f196b4729 /clang/test
parent3e6a0be4c4531d97134daea5bd32c5564e3d34f5 (diff)
downloadbcm5719-llvm-974131ea8825041673a8c8dda7c42f9a9376eb17.tar.gz
bcm5719-llvm-974131ea8825041673a8c8dda7c42f9a9376eb17.zip
[X86, inlineasm] Check that the output size is correct for the given constraint.
llvm-svn: 218064
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/mmx-inline-asm-error.c4
-rw-r--r--clang/test/CodeGen/x86_32-inline-asm.c13
2 files changed, 15 insertions, 2 deletions
diff --git a/clang/test/CodeGen/mmx-inline-asm-error.c b/clang/test/CodeGen/mmx-inline-asm-error.c
index 9be27fac585..1e2246176a1 100644
--- a/clang/test/CodeGen/mmx-inline-asm-error.c
+++ b/clang/test/CodeGen/mmx-inline-asm-error.c
@@ -5,8 +5,8 @@ vec256 foo(vec256 in) {
vec256 out;
asm("something %0" : : "y"(in)); // expected-error {{invalid input size for constraint 'y'}}
- asm("something %0" : "=y"(out));
- asm("something %0, %0" : "+y"(out));
+ asm("something %0" : "=y"(out)); // expected-error {{invalid output size for constraint '=y'}}
+ asm("something %0, %0" : "+y"(out)); // expected-error {{invalid output size for constraint '+y'}}
return out;
}
diff --git a/clang/test/CodeGen/x86_32-inline-asm.c b/clang/test/CodeGen/x86_32-inline-asm.c
index 65c7eeb5787..18fe4d0e14a 100644
--- a/clang/test/CodeGen/x86_32-inline-asm.c
+++ b/clang/test/CodeGen/x86_32-inline-asm.c
@@ -43,4 +43,17 @@ int func1() {
__asm__ volatile("foo1 %0" : : "f" (val256)); // expected-error {{invalid input size for constraint 'f'}}
__asm__ volatile("foo1 %0" : : "t" (val256)); // expected-error {{invalid input size for constraint 't'}}
__asm__ volatile("foo1 %0" : : "u" (val256)); // expected-error {{invalid input size for constraint 'u'}}
+
+ __asm__ volatile("foo1 %0" : "=R" (val)); // expected-error {{invalid output size for constraint '=R'}}
+ __asm__ volatile("foo1 %0" : "=q" (val)); // expected-error {{invalid output size for constraint '=q'}}
+ __asm__ volatile("foo1 %0" : "=Q" (val)); // expected-error {{invalid output size for constraint '=Q'}}
+ __asm__ volatile("foo1 %0" : "=a" (val)); // expected-error {{invalid output size for constraint '=a'}}
+ __asm__ volatile("foo1 %0" : "=b" (val)); // expected-error {{invalid output size for constraint '=b'}}
+ __asm__ volatile("foo1 %0" : "=c" (val)); // expected-error {{invalid output size for constraint '=c'}}
+ __asm__ volatile("foo1 %0" : "=d" (val)); // expected-error {{invalid output size for constraint '=d'}}
+ __asm__ volatile("foo1 %0" : "=S" (val)); // expected-error {{invalid output size for constraint '=S'}}
+ __asm__ volatile("foo1 %0" : "=D" (val)); // expected-error {{invalid output size for constraint '=D'}}
+ __asm__ volatile("foo1 %0" : "=A" (val128)); // expected-error {{invalid output size for constraint '=A'}}
+ __asm__ volatile("foo1 %0" : "=t" (val256)); // expected-error {{invalid output size for constraint '=t'}}
+ __asm__ volatile("foo1 %0" : "=u" (val256)); // expected-error {{invalid output size for constraint '=u'}}
}
OpenPOWER on IntegriCloud