xref: /aosp_15_r20/external/clang/test/SemaCXX/attr-no-sanitize-memory.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify  %s
2*67e74705SXin Li 
3*67e74705SXin Li #define NO_SANITIZE_MEMORY __attribute__((no_sanitize_memory))
4*67e74705SXin Li 
5*67e74705SXin Li #if !__has_attribute(no_sanitize_memory)
6*67e74705SXin Li #error "Should support no_sanitize_memory"
7*67e74705SXin Li #endif
8*67e74705SXin Li 
9*67e74705SXin Li void noanal_fun() NO_SANITIZE_MEMORY;
10*67e74705SXin Li 
11*67e74705SXin Li void noanal_fun_alt() __attribute__((__no_sanitize_memory__));
12*67e74705SXin Li 
13*67e74705SXin Li void noanal_fun_args() __attribute__((no_sanitize_memory(1))); // \
14*67e74705SXin Li   // expected-error {{'no_sanitize_memory' attribute takes no arguments}}
15*67e74705SXin Li 
16*67e74705SXin Li int noanal_testfn(int y) NO_SANITIZE_MEMORY;
17*67e74705SXin Li 
noanal_testfn(int y)18*67e74705SXin Li int noanal_testfn(int y) {
19*67e74705SXin Li   int x NO_SANITIZE_MEMORY = y; // \
20*67e74705SXin Li     // expected-error {{'no_sanitize_memory' attribute only applies to functions}}
21*67e74705SXin Li   return x;
22*67e74705SXin Li }
23*67e74705SXin Li 
24*67e74705SXin Li int noanal_test_var NO_SANITIZE_MEMORY; // \
25*67e74705SXin Li   // expected-error {{'no_sanitize_memory' attribute only applies to functions}}
26*67e74705SXin Li 
27*67e74705SXin Li class NoanalFoo {
28*67e74705SXin Li  private:
29*67e74705SXin Li   int test_field NO_SANITIZE_MEMORY; // \
30*67e74705SXin Li     // expected-error {{'no_sanitize_memory' attribute only applies to functions}}
31*67e74705SXin Li   void test_method() NO_SANITIZE_MEMORY;
32*67e74705SXin Li };
33*67e74705SXin Li 
34*67e74705SXin Li class NO_SANITIZE_MEMORY NoanalTestClass { // \
35*67e74705SXin Li   // expected-error {{'no_sanitize_memory' attribute only applies to functions}}
36*67e74705SXin Li };
37*67e74705SXin Li 
38*67e74705SXin Li void noanal_fun_params(int lvar NO_SANITIZE_MEMORY); // \
39*67e74705SXin Li   // expected-error {{'no_sanitize_memory' attribute only applies to functions}}
40