xref: /aosp_15_r20/external/clang/test/Sema/attr-naked.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -verify -fsyntax-only -triple arm-none-linux
2*67e74705SXin Li class Foo {
3*67e74705SXin Li   void bar();
4*67e74705SXin Li   static void bar2();
5*67e74705SXin Li   unsigned v;
6*67e74705SXin Li   static unsigned s;
7*67e74705SXin Li };
8*67e74705SXin Li 
bar()9*67e74705SXin Li void __attribute__((naked)) Foo::bar() { // expected-note{{attribute is here}}
10*67e74705SXin Li   asm("mov r2, %0" : : "r"(v)); // expected-error{{'this' pointer references not allowed in naked functions}}
11*67e74705SXin Li }
12*67e74705SXin Li 
bar2()13*67e74705SXin Li void __attribute__((naked)) Foo::bar2() {
14*67e74705SXin Li   asm("mov r2, %0" : : "r"(s)); // static member reference is OK
15*67e74705SXin Li }
16