1*20d7fa1cSgbMattN // RUN: %clang_tysan -O0 %s -o %t && %run %t >%t.out 2>&1 2*20d7fa1cSgbMattN // RUN: FileCheck --check-prefixes=CHECK,CHECK-SHORT %s < %t.out 3*20d7fa1cSgbMattN 4*20d7fa1cSgbMattN // RUN: %env_tysan_opts=print_stacktrace=1 %run %t >%t.out 2>&1 5*20d7fa1cSgbMattN // RUN: FileCheck --check-prefixes=CHECK,CHECK-LONG %s < %t.out 6*20d7fa1cSgbMattN 7*20d7fa1cSgbMattN float *P; 8*20d7fa1cSgbMattN void zero_array() { 9*20d7fa1cSgbMattN int i; 10*20d7fa1cSgbMattN for (i = 0; i < 1; ++i) 11*20d7fa1cSgbMattN P[i] = 0.0f; 12*20d7fa1cSgbMattN // CHECK: ERROR: TypeSanitizer: type-aliasing-violation 13*20d7fa1cSgbMattN // CHECK: WRITE of size 4 at {{.*}} with type float accesses an existing object of type p1 float 14*20d7fa1cSgbMattN // CHECK: {{#0 0x.* in zero_array .*print_stacktrace.c:}}[[@LINE-3]] 15*20d7fa1cSgbMattN // CHECK-SHORT-NOT: {{#1 0x.* in main .*print_stacktrace.c}} 16*20d7fa1cSgbMattN // CHECK-LONG-NEXT: {{#1 0x.* in main .*print_stacktrace.c}} 17*20d7fa1cSgbMattN } 18*20d7fa1cSgbMattN 19*20d7fa1cSgbMattN int main() { 20*20d7fa1cSgbMattN P = (float *)&P; 21*20d7fa1cSgbMattN zero_array(); 22*20d7fa1cSgbMattN } 23