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