Use -fsanitize-recover instead of -mllvm -msan-keep-going: clang.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Mon, 7 Nov 2016 21:02:11 +0000 (21:02 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Mon, 7 Nov 2016 21:02:11 +0000 (21:02 +0000)
Summary: Use -fsanitize-recover instead of -mllvm -msan-keep-going: pass -fsanitize-recover value to msan.

Reviewers: eugenis

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D26354

Patch by Aleksey Shlyapnikov.

llvm-svn: 286148

clang/lib/CodeGen/BackendUtil.cpp

index 367cace..7b832ab 100644 (file)
@@ -200,7 +200,9 @@ static void addMemorySanitizerPass(const PassManagerBuilder &Builder,
   const PassManagerBuilderWrapper &BuilderWrapper =
       static_cast<const PassManagerBuilderWrapper&>(Builder);
   const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts();
-  PM.add(createMemorySanitizerPass(CGOpts.SanitizeMemoryTrackOrigins));
+  int TrackOrigins = CGOpts.SanitizeMemoryTrackOrigins;
+  bool Recover = CGOpts.SanitizeRecover.has(SanitizerKind::Memory);
+  PM.add(createMemorySanitizerPass(TrackOrigins, Recover));
 
   // MemorySanitizer inserts complex instrumentation that mostly follows
   // the logic of the original code, but operates on "shadow" values.