1// RUN: %clang_tysan -O0 %s -o %t && %run %t >%t.out 2>&1
2// RUN: FileCheck %s < %t.out
3
4#include <stdint.h>
5#include <stdio.h>
6
7// CHECK-NOT: TypeSanitizer
8
9union a {
10 int16_t b;
11 uint64_t c;
12} d;
13
14uint64_t *e = &d.c;
15static uint16_t f(int16_t a, int32_t b, uint64_t c);
16static int64_t g(int32_t aa, uint8_t h, union a bb) {
17 int16_t *i = &d.b;
18 f(a: 0, b: h, c: 0);
19 *i = h;
20 return 0;
21}
22uint16_t f(int16_t a, int32_t b, uint64_t c) {
23 for (d.c = 0; 0;)
24 ;
25 *e = 0;
26 return 0;
27}
28
29int main() {
30 uint32_t j = 8;
31 g(aa: 1, h: j, bb: d);
32 printf(format: "%d\n", d.b);
33 return 0;
34}
35

source code of compiler-rt/test/tysan/violation-pr51837.c