[compiler-rt] r222918 - [msan] Fix origin propagation for select of floats.

Evgeniy Stepanov eugeni.stepanov at gmail.com
Fri Nov 28 03:17:58 PST 2014


Author: eugenis
Date: Fri Nov 28 05:17:58 2014
New Revision: 222918

URL: http://llvm.org/viewvc/llvm-project?rev=222918&view=rev
Log:
[msan] Fix origin propagation for select of floats.

MSan does not assign origin for instrumentation temps (i.e. the ones that do
not come from the application code), but "select" instrumentation erroneously
tried to use one of those.

https://code.google.com/p/memory-sanitizer/issues/detail?id=78

Added:
    compiler-rt/trunk/test/msan/select_float_origin.cc   (with props)

Added: compiler-rt/trunk/test/msan/select_float_origin.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/msan/select_float_origin.cc?rev=222918&view=auto
==============================================================================
--- compiler-rt/trunk/test/msan/select_float_origin.cc (added)
+++ compiler-rt/trunk/test/msan/select_float_origin.cc Fri Nov 28 05:17:58 2014
@@ -0,0 +1,24 @@
+// Regression test for origin propagation in "select i1, float, float".
+// https://code.google.com/p/memory-sanitizer/issues/detail?id=78
+
+// RUN: %clangxx_msan -O2 -fsanitize-memory-track-origins %s -o %t && not %run %t >%t.out 2>&1
+// RUN: FileCheck %s < %t.out
+
+// RUN: %clangxx_msan -O2 -fsanitize-memory-track-origins=2 %s -o %t && not %run %t >%t.out 2>&1
+// RUN: FileCheck %s < %t.out
+
+#include <stdio.h>
+#include <sanitizer/msan_interface.h>
+
+int main() {
+  volatile bool b = true;
+  float x, y;
+  __msan_allocated_memory(&x, sizeof(x));
+  __msan_allocated_memory(&y, sizeof(y));
+  float z = b ? x : y;
+  if (z > 0) printf(".\n");
+  // CHECK: Uninitialized value was created by a heap allocation
+  // CHECK: {{#0 0x.* in .*__msan_allocated_memory}}
+  // CHECK: {{#1 0x.* in main .*select_float_origin.cc:}}[[@LINE-6]]
+  return 0;
+}

Propchange: compiler-rt/trunk/test/msan/select_float_origin.cc
------------------------------------------------------------------------------
    svn:eol-style = LF





More information about the llvm-commits mailing list