// RUN: %clang_cc1 %s -verify -fsyntax-only -triple arm-none-linux // RUN: %clang_cc1 %s -verify -fsyntax-only -fms-compatibility -DDECLSPEC -triple i686-pc-win32 class Foo { void bar(); static void bar2(); unsigned v; static unsigned s; }; void __attribute__((naked)) Foo::bar() { // expected-note{{attribute is here}} asm("mov r2, %0" : : "r"(v)); // expected-error{{'this' pointer references not allowed in naked functions}} } void __attribute__((naked)) Foo::bar2() { asm("mov r2, %0" : : "r"(s)); // static member reference is OK } struct Bar { #ifdef DECLSPEC __declspec(naked) void func1(); // expected-error {{'naked' attribute only applies to non-member functions}} __declspec(naked) static void func2(); // expected-error {{'naked' attribute only applies to non-member functions}} #endif __attribute__((naked)) void func3(); // OK __attribute__((naked)) static void func4(); // OK };