1*d21b3d34SFangrui Song // Check that 8-byte store updates origin for the full store range. 2*d21b3d34SFangrui Song // RUN: %clangxx_msan -fsanitize-memory-track-origins -O0 %s -o %t && not %run %t >%t.out 2>&1 3*d21b3d34SFangrui Song // RUN: FileCheck %s < %t.out && FileCheck %s < %t.out 4*d21b3d34SFangrui Song // RUN: %clangxx_msan -fsanitize-memory-track-origins -O2 %s -o %t && not %run %t >%t.out 2>&1 5*d21b3d34SFangrui Song // RUN: FileCheck %s < %t.out && FileCheck %s < %t.out 6*d21b3d34SFangrui Song 7*d21b3d34SFangrui Song #include <sanitizer/msan_interface.h> 8*d21b3d34SFangrui Song main()9*d21b3d34SFangrui Songint main() { 10*d21b3d34SFangrui Song uint64_t *volatile p = new uint64_t; 11*d21b3d34SFangrui Song uint64_t *volatile q = new uint64_t; 12*d21b3d34SFangrui Song *p = *q; 13*d21b3d34SFangrui Song char *z = (char *)p; 14*d21b3d34SFangrui Song return z[6]; 15*d21b3d34SFangrui Song // CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value 16*d21b3d34SFangrui Song // CHECK: in main {{.*}}origin-store-long.cpp:[[@LINE-2]] 17*d21b3d34SFangrui Song 18*d21b3d34SFangrui Song // CHECK: Uninitialized value was created by a heap allocation 19*d21b3d34SFangrui Song // CHECK: in main {{.*}}origin-store-long.cpp:[[@LINE-8]] 20*d21b3d34SFangrui Song } 21*d21b3d34SFangrui Song 22