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