diff --git a/compiler-rt/test/msan/noundef_analysis.cpp b/compiler-rt/test/msan/noundef_analysis.cpp new file mode 100644 --- /dev/null +++ b/compiler-rt/test/msan/noundef_analysis.cpp @@ -0,0 +1,22 @@ +// RUN: %clangxx_msan %s -o %t && %run %t >%t.out 2>&1 +// RUN: FileCheck %s --check-prefix=MISSED --allow-empty < %t.out +// RUN: %clangxx_msan %s -Xclang -enable-noundef-analysis -mllvm -msan-eager-checks=1 -o %t && not %run %t >%t.out 2>&1 +// RUN: FileCheck %s < %t.out + +struct SimpleStruct { + int md1; +}; + +static int sink; + +static void examineValue(int x) { sink = x; } + +int main(int argc, char *argv[]) { + auto ss = new SimpleStruct; + examineValue(ss->md1); + + return 0; +} + +// CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value +// MISSED-NOT: use-of-uninitialized-value