diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2014-09-18 18:17:18 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2014-09-18 18:17:18 +0000 |
commit | 974131ea8825041673a8c8dda7c42f9a9376eb17 (patch) | |
tree | 39e922e630d9141febda031d35e6786f196b4729 /clang/test | |
parent | 3e6a0be4c4531d97134daea5bd32c5564e3d34f5 (diff) | |
download | bcm5719-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.c | 4 | ||||
-rw-r--r-- | clang/test/CodeGen/x86_32-inline-asm.c | 13 |
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'}} } |