diff options
author | Yury Gribov <y.gribov@samsung.com> | 2015-11-11 10:45:48 +0000 |
---|---|---|
committer | Yury Gribov <y.gribov@samsung.com> | 2015-11-11 10:45:48 +0000 |
commit | 5bfeca12017d3d8352b7ebc9ea2eeb2f95950395 (patch) | |
tree | 2e32d8083d889e2c6e3555770e494058d527334f /clang/lib/CodeGen/BackendUtil.cpp | |
parent | efb0c3780e9bbba16ab014e62b323a86bcce5a31 (diff) | |
download | bcm5719-llvm-5bfeca12017d3d8352b7ebc9ea2eeb2f95950395.tar.gz bcm5719-llvm-5bfeca12017d3d8352b7ebc9ea2eeb2f95950395.zip |
[ASan] Allow -fsanitize-recover=address.
Differential Revision: http://reviews.llvm.org/D14243
llvm-svn: 252721
Diffstat (limited to 'clang/lib/CodeGen/BackendUtil.cpp')
-rw-r--r-- | clang/lib/CodeGen/BackendUtil.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index b2a65c6eacb..37e62f8ddcd 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -194,14 +194,20 @@ static void addSanitizerCoveragePass(const PassManagerBuilder &Builder, static void addAddressSanitizerPasses(const PassManagerBuilder &Builder, legacy::PassManagerBase &PM) { - PM.add(createAddressSanitizerFunctionPass(/*CompileKernel*/false)); - PM.add(createAddressSanitizerModulePass(/*CompileKernel*/false)); + const PassManagerBuilderWrapper &BuilderWrapper = + static_cast<const PassManagerBuilderWrapper&>(Builder); + const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); + bool Recover = CGOpts.SanitizeRecover.has(SanitizerKind::Address); + PM.add(createAddressSanitizerFunctionPass(/*CompileKernel*/false, Recover)); + PM.add(createAddressSanitizerModulePass(/*CompileKernel*/false, Recover)); } static void addKernelAddressSanitizerPasses(const PassManagerBuilder &Builder, legacy::PassManagerBase &PM) { - PM.add(createAddressSanitizerFunctionPass(/*CompileKernel*/true)); - PM.add(createAddressSanitizerModulePass(/*CompileKernel*/true)); + PM.add(createAddressSanitizerFunctionPass(/*CompileKernel*/true, + /*Recover*/true)); + PM.add(createAddressSanitizerModulePass(/*CompileKernel*/true, + /*Recover*/true)); } static void addMemorySanitizerPass(const PassManagerBuilder &Builder, |