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