brintos

brintos / llvm-project-archived public Read only

0
0
Text · 842 B · b3d8b0a Raw
33 lines · c
1// RUN: %clang_tysan -O0 %s -o %t && %run %t >%t.out 2>&12// RUN: FileCheck %s < %t.out3 4// https://github.com/llvm/llvm-project/issues/452825 6#include <stdio.h>7 8int main(void) {9 10  double a[29], b[20];11  int i, j;12 13  for (i = 0; i < 20; ++i) {14    b[i] = 2.01f + 1.f;15    ((float *)a)[i] = 2.01f * 2.0145f;16    ((float *)a + 38)[i] = 2.01f * 1.0123f;17  }18 19  // CHECK:      TypeSanitizer: type-aliasing-violation on address20  // CHECK-NEXT: WRITE of size 8 at {{.+}} with type double accesses an existing object of type float21  // CHECK-NEXT:   in main {{.*/?}}violation-pr45282.c:2522 23  // loop of problems24  for (j = 2; j <= 4; ++j) {25    a[j - 1] = ((float *)a)[j] * ((float *)a + 38)[j - 1];26    ((float *)a + 38)[j - 1] = ((float *)a)[j - 1] + b[j - 1];27  }28 29  printf("((float *)a + 38)[2] = %f\n", ((float *)a + 38)[2]);30 31  return 0;32}33