summaryrefslogtreecommitdiffstats
path: root/test/Sema/attr-naked.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Sema/attr-naked.c')
-rw-r--r--test/Sema/attr-naked.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/test/Sema/attr-naked.c b/test/Sema/attr-naked.c
index 55c6b32..6b1344a 100644
--- a/test/Sema/attr-naked.c
+++ b/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,41 @@ 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");
+}
+
+__attribute__((naked)) int t5(int x) {
+ asm("movl x, %eax");
+ asm("retl");
+}
+
+__attribute__((naked)) void t6() {
+ ;
+}
+
+__attribute__((naked)) void t7() {
+ asm("movl $42, %eax");
+ ;
+}
+
+extern int x, y;
+
+__attribute__((naked)) void t8(int z) { // expected-note{{attribute is here}}
+ __asm__ ("movl $42, %1"
+ : "=r"(x),
+ "=r"(z) // expected-error{{parameter references not allowed in naked functions}}
+ );
+}
+
+__attribute__((naked)) void t9(int z) { // expected-note{{attribute is here}}
+ __asm__ ("movl %eax, %1"
+ : : "r"(x),
+ "r"(z) // expected-error{{parameter references not allowed in naked functions}}
+ );
+}
OpenPOWER on IntegriCloud