1*d21b3d34SFangrui Song // RUN: %clangxx_msan -O0 %s -o %t && %run %t 2*d21b3d34SFangrui Song // RUN: %clangxx_msan -DPOSITIVE -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s 3*d21b3d34SFangrui Song // REQUIRES: x86_64-target-arch 4*d21b3d34SFangrui Song 5*d21b3d34SFangrui Song #include <emmintrin.h> 6*d21b3d34SFangrui Song to_int(double v)7*d21b3d34SFangrui Songint to_int(double v) { 8*d21b3d34SFangrui Song __m128d t = _mm_set_sd(v); 9*d21b3d34SFangrui Song int x = _mm_cvtsd_si32(t); 10*d21b3d34SFangrui Song return x; 11*d21b3d34SFangrui Song // CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value 12*d21b3d34SFangrui Song // CHECK: #{{.*}} in to_int{{.*}}vector_cvt.cpp:[[@LINE-3]] 13*d21b3d34SFangrui Song } 14*d21b3d34SFangrui Song main()15*d21b3d34SFangrui Songint main() { 16*d21b3d34SFangrui Song #ifdef POSITIVE 17*d21b3d34SFangrui Song double v; 18*d21b3d34SFangrui Song #else 19*d21b3d34SFangrui Song double v = 1.1; 20*d21b3d34SFangrui Song #endif 21*d21b3d34SFangrui Song double* volatile p = &v; 22*d21b3d34SFangrui Song int x = to_int(*p); 23*d21b3d34SFangrui Song return !x; 24*d21b3d34SFangrui Song } 25