<div dir="ltr">woohoo! </div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 26, 2015 at 7:59 AM, Evgeniy Stepanov <span dir="ltr"><<a href="mailto:eugeni.stepanov@gmail.com" target="_blank">eugeni.stepanov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: eugenis<br>
Date: Thu Feb 26 09:59:30 2015<br>
New Revision: 230644<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=230644&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=230644&view=rev</a><br>
Log:<br>
[msan] Change track-origins default mode from 1 to 2.<br>
<br>
Change -fsanitize-memory-track-origins to be equivalent to<br>
-fsanitize-memory-track-origins=2.<br>
<br>
Track-origins=2 provides a lot more detailed reports at the cost of<br>
some additional slowdown (ranging from none to, sometimes, 3x; ~3% average on<br>
SPEC2006).<br>
<br>
Modified:<br>
    cfe/trunk/docs/MemorySanitizer.rst<br>
    cfe/trunk/docs/UsersManual.rst<br>
    cfe/trunk/lib/Driver/SanitizerArgs.cpp<br>
    cfe/trunk/test/Driver/fsanitize.c<br>
<br>
Modified: cfe/trunk/docs/MemorySanitizer.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/MemorySanitizer.rst?rev=230644&r1=230643&r2=230644&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/MemorySanitizer.rst?rev=230644&r1=230643&r2=230644&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/docs/MemorySanitizer.rst (original)<br>
+++ cfe/trunk/docs/MemorySanitizer.rst Thu Feb 26 09:59:30 2015<br>
@@ -110,32 +110,12 @@ Origin Tracking<br>
<br>
 MemorySanitizer can track origins of unitialized values, similar to<br>
 Valgrind's --track-origins option. This feature is enabled by<br>
-``-fsanitize-memory-track-origins`` Clang option. With the code from<br>
+``-fsanitize-memory-track-origins=2`` (or simply<br>
+``-fsanitize-memory-track-origins``) Clang option. With the code from<br>
 the example above,<br>
<br>
 .. code-block:: console<br>
<br>
-    % clang -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -g -O2 umr.cc<br>
-    % ./a.out<br>
-    WARNING: MemorySanitizer: use-of-uninitialized-value<br>
-        #0 0x7f7893912f0b in main umr2.cc:6<br>
-        #1 0x7f789249b76c in __libc_start_main libc-start.c:226<br>
-<br>
-      Uninitialized value was created by a heap allocation<br>
-        #0 0x7f7893901cbd in operator new[](unsigned long) msan_new_delete.cc:44<br>
-        #1 0x7f7893912e06 in main umr2.cc:4<br>
-<br>
-Origin tracking has proved to be very useful for debugging MemorySanitizer<br>
-reports. It slows down program execution by a factor of 1.5x-2x on top<br>
-of the usual MemorySanitizer slowdown.<br>
-<br>
-MemorySanitizer can provide even more information with<br>
-``-fsanitize-memory-track-origins=2`` flag. In this mode reports<br>
-include information about intermediate stores the uninitialized value went<br>
-through.<br>
-<br>
-.. code-block:: console<br>
-<br>
     % cat umr2.cc<br>
     #include <stdio.h><br>
<br>
@@ -162,6 +142,15 @@ through.<br>
         #0 0x7f7893901cbd in operator new[](unsigned long) msan_new_delete.cc:44<br>
         #1 0x7f7893912e06 in main umr2.cc:4<br>
<br>
+By default, MemorySanitizer collects both allocation points and all<br>
+intermediate stores the uninitialized value went through.  Origin<br>
+tracking has proved to be very useful for debugging MemorySanitizer<br>
+reports. It slows down program execution by a factor of 1.5x-2x on top<br>
+of the usual MemorySanitizer slowdown.<br>
+<br>
+Clang option ``-fsanitize-memory-track-origins=1`` enabled a slightly<br>
+faster mode when MemorySanitizer collects only allocation points but<br>
+not intermediate stores.<br>
<br>
 Handling external code<br>
 ============================<br>
<br>
Modified: cfe/trunk/docs/UsersManual.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/UsersManual.rst?rev=230644&r1=230643&r2=230644&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/UsersManual.rst?rev=230644&r1=230643&r2=230644&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/docs/UsersManual.rst (original)<br>
+++ cfe/trunk/docs/UsersManual.rst Thu Feb 26 09:59:30 2015<br>
@@ -1030,10 +1030,11 @@ are listed below.<br>
       uninitialized bits came from. Slows down execution by additional<br>
       1.5x-2x.<br>
<br>
-      Possible values for level are 0 (off), 1 (default), 2. Level 2 adds more<br>
-      sections to MemorySanitizer reports describing the order of memory stores<br>
-      the uninitialized value went through. Beware, this mode may use a lot of<br>
-      extra memory.<br>
+      Possible values for level are 0 (off), 1, 2 (default). Level 2<br>
+      adds more sections to MemorySanitizer reports describing the<br>
+      order of memory stores the uninitialized value went<br>
+      through. This mode may use extra memory in programs that copy<br>
+      uninitialized memory a lot.<br>
<br>
    Extra features of UndefinedBehaviorSanitizer:<br>
<br>
<br>
Modified: cfe/trunk/lib/Driver/SanitizerArgs.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/SanitizerArgs.cpp?rev=230644&r1=230643&r2=230644&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/SanitizerArgs.cpp?rev=230644&r1=230643&r2=230644&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Driver/SanitizerArgs.cpp (original)<br>
+++ cfe/trunk/lib/Driver/SanitizerArgs.cpp Thu Feb 26 09:59:30 2015<br>
@@ -360,7 +360,7 @@ SanitizerArgs::SanitizerArgs(const ToolC<br>
                             options::OPT_fsanitize_memory_track_origins,<br>
                             options::OPT_fno_sanitize_memory_track_origins)) {<br>
       if (A->getOption().matches(options::OPT_fsanitize_memory_track_origins)) {<br>
-        MsanTrackOrigins = 1;<br>
+        MsanTrackOrigins = 2;<br>
       } else if (A->getOption().matches(<br>
                      options::OPT_fno_sanitize_memory_track_origins)) {<br>
         MsanTrackOrigins = 0;<br>
<br>
Modified: cfe/trunk/test/Driver/fsanitize.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=230644&r1=230643&r2=230644&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=230644&r1=230643&r2=230644&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Driver/fsanitize.c (original)<br>
+++ cfe/trunk/test/Driver/fsanitize.c Thu Feb 26 09:59:30 2015<br>
@@ -66,11 +66,13 @@<br>
 // RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -pie %s -### 2>&1<br>
 // OK<br>
<br>
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-1<br>
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-2<br>
 // RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins=1 -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-1<br>
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins=2 -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-1<br>
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fno-sanitize-memory-track-origins -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-1<br>
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins=0 -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-1<br>
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins=1 -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-2<br>
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins=2 -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-2<br>
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fno-sanitize-memory-track-origins -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-2<br>
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins=0 -fsanitize-memory-track-origins=1 -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-1<br>
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins=0 -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TRACK-ORIGINS-2<br>
<br>
 // CHECK-TRACK-ORIGINS-1: -fsanitize-memory-track-origins=1<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>