summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2014-09-04 22:16:40 +0000
committerHans Wennborg <hans@hanshq.net>2014-09-04 22:16:40 +0000
commitd62cdd2c14c481e6d3e7fdebc17baba2ba447b24 (patch)
tree74ec17ac315fd371260ec500e99e6ae94fd0328a /clang/test/Sema
parentd71907dd077ba3385dbb5ebad479eeb7391cef91 (diff)
downloadbcm5719-llvm-d62cdd2c14c481e6d3e7fdebc17baba2ba447b24.tar.gz
bcm5719-llvm-d62cdd2c14c481e6d3e7fdebc17baba2ba447b24.zip
Don't allow non-ASM statements in naked functions
Naked functions don't have prologues or epilogues, so doing codegen for anything other than inline assembly would be completely hit or miss. Differential Revision: http://reviews.llvm.org/D5183 llvm-svn: 217199
Diffstat (limited to 'clang/test/Sema')
-rw-r--r--clang/test/Sema/attr-naked.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/clang/test/Sema/attr-naked.c b/clang/test/Sema/attr-naked.c
index 55c6b326ef1..c1ad52c4548 100644
--- a/clang/test/Sema/attr-naked.c
+++ b/clang/test/Sema/attr-naked.c
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
+// RUN: %clang_cc1 %s -verify -fsyntax-only -triple i686-pc-linux
int a __attribute__((naked)); // expected-warning {{'naked' attribute only applies to functions}}
@@ -10,3 +10,11 @@ void t1() __attribute__((naked));
void t2() __attribute__((naked(2))); // expected-error {{'naked' attribute takes no arguments}}
+__attribute__((naked)) int t3() { // expected-note{{attribute is here}}
+ return 42; // expected-error{{non-ASM statement in naked function is not supported}}
+}
+
+__attribute__((naked)) int t4() {
+ asm("movl $42, %eax");
+ asm("retl");
+}
OpenPOWER on IntegriCloud