xref: /llvm-project/compiler-rt/test/tysan/violation-pr62544.c (revision 641fbf1524338c86c952ebb1ec8d2b497ada3cef)
1 // RUN: %clang_tysan -O0 %s -o %t && %run %t >%t.out 2>&1
2 // RUN: FileCheck %s < %t.out
3 
4 // https://github.com/llvm/llvm-project/issues/62544
5 
6 int printf(const char *, ...);
7 int a, b, c;
8 long d;
9 int main() {
10   short *e = &a;
11   int *f = &a;
12   *f = 0;
13   for (; b <= 9; b++) {
14     int **g = &f;
15     *f = d;
16     *g = &c;
17   }
18 
19   // CHECK:      TypeSanitizer: type-aliasing-violation on address
20   // CHECK-NEXT: WRITE of size 2 at {{.+}} with type short accesses an existing object of type int
21   // CHECK-NEXT:   in main {{.*/?}}violation-pr62544.c:22
22   *e = 3;
23   printf("%d\n", a);
24 }
25