xref: /llvm-project/compiler-rt/test/tysan/preprocessor.c (revision 1c0af8dced4a38967f3cb2d93fb6576535bc748b)
1*1c0af8dcSgbMattN // RUN: %clang_tysan -O0 %s -o %t && %run %t >%t.out 2>&1 && FileCheck --check-prefix=CHECK-SANITIZED %s < %t.out
2*1c0af8dcSgbMattN // RUN: %clang_tysan -DNOSAN -O0 %s -o %t && %run %t >%t.out 2>&1 && FileCheck --check-prefix=CHECK-NOSAN %s < %t.out
3*1c0af8dcSgbMattN // RUN: %clang -O0 %s -o %t && %run %t >%t.out 2>&1 && FileCheck --check-prefix=CHECK-SIMPLE %s < %t.out
4*1c0af8dcSgbMattN 
5*1c0af8dcSgbMattN #include <stdio.h>
6*1c0af8dcSgbMattN 
7*1c0af8dcSgbMattN #if __has_feature(type_sanitizer)
8*1c0af8dcSgbMattN 
9*1c0af8dcSgbMattN #  ifdef NOSAN
10*1c0af8dcSgbMattN __attribute__((no_sanitize("type")))
11*1c0af8dcSgbMattN #  endif
12*1c0af8dcSgbMattN int main(){
13*1c0af8dcSgbMattN 
14*1c0af8dcSgbMattN   int value = 42;
15*1c0af8dcSgbMattN   printf("As float: %f\n", *(float *)&value);
16*1c0af8dcSgbMattN   // CHECK-SANITIZED: ERROR: TypeSanitizer
17*1c0af8dcSgbMattN   // CHECK-NOSAN-NOT: ERROR: TypeSanitizer
18*1c0af8dcSgbMattN 
19*1c0af8dcSgbMattN   return 0;
20*1c0af8dcSgbMattN }
21*1c0af8dcSgbMattN 
22*1c0af8dcSgbMattN #else
23*1c0af8dcSgbMattN 
24*1c0af8dcSgbMattN int main() {
25*1c0af8dcSgbMattN   printf("Nothing interesting here\n");
26*1c0af8dcSgbMattN   return 0;
27*1c0af8dcSgbMattN }
28*1c0af8dcSgbMattN // CHECK-SIMPLE: Nothing interesting here
29*1c0af8dcSgbMattN 
30*1c0af8dcSgbMattN #endif
31