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

source code of compiler-rt/test/msan/vector_cvt.cpp