xref: /llvm-project/compiler-rt/test/tysan/int-long.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 #include <stdio.h>
5 
6 long foo(int *x, long *y) {
7   *x = 0;
8   *y = 1;
9   // CHECK: ERROR: TypeSanitizer: type-aliasing-violation
10   // CHECK: WRITE of size 8 at {{.*}} with type long accesses an existing object of type int
11   // CHECK: {{#0 0x.* in foo .*int-long.c:}}[[@LINE-3]]
12 
13   return *x;
14 }
15 
16 int main(void) {
17   long l;
18   printf("%ld\n", foo((int *)&l, &l));
19 }
20 
21 // CHECK-NOT: ERROR: TypeSanitizer: type-aliasing-violation
22