xref: /llvm-project/compiler-rt/test/msan/inline.cpp (revision d21b3d346af2f6189638d853182e389555e7ccb9)
1*d21b3d34SFangrui Song // RUN: %clangxx_msan -O3 %s -o %t && %run %t
2*d21b3d34SFangrui Song 
3*d21b3d34SFangrui Song // Test that no_sanitize_memory attribute applies even when the function would
4*d21b3d34SFangrui Song // be normally inlined.
5*d21b3d34SFangrui Song 
6*d21b3d34SFangrui Song #include <stdlib.h>
7*d21b3d34SFangrui Song 
8*d21b3d34SFangrui Song __attribute__((no_sanitize_memory))
f(int * p)9*d21b3d34SFangrui Song int f(int *p) {
10*d21b3d34SFangrui Song   if (*p) // BOOOM?? Nope!
11*d21b3d34SFangrui Song     exit(0);
12*d21b3d34SFangrui Song   return 0;
13*d21b3d34SFangrui Song }
14*d21b3d34SFangrui Song 
main(int argc,char ** argv)15*d21b3d34SFangrui Song int main(int argc, char **argv) {
16*d21b3d34SFangrui Song   int x;
17*d21b3d34SFangrui Song   int * volatile p = &x;
18*d21b3d34SFangrui Song   int res = f(p);
19*d21b3d34SFangrui Song   return 0;
20*d21b3d34SFangrui Song }
21