diff options
author | Kostya Serebryany <kcc@google.com> | 2011-11-16 17:34:26 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2011-11-16 17:34:26 +0000 |
commit | 8855ff61cb4e554a7ca74ed47a97299c7b2a8b9e (patch) | |
tree | 74fbffa58fbdfebeb708b71d92b32fbe2de68043 /clang/lib/CodeGen/BackendUtil.cpp | |
parent | 10f4d06b81d4457b2742f3303aa8c1a7afd63df2 (diff) | |
download | bcm5719-llvm-8855ff61cb4e554a7ca74ed47a97299c7b2a8b9e.tar.gz bcm5719-llvm-8855ff61cb4e554a7ca74ed47a97299c7b2a8b9e.zip |
Add -f[no-]address-sanitizer flag
llvm-svn: 144800
Diffstat (limited to 'clang/lib/CodeGen/BackendUtil.cpp')
-rw-r--r-- | clang/lib/CodeGen/BackendUtil.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 3639dba49af..0410cec7369 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -115,6 +115,11 @@ static void addObjCARCOptPass(const PassManagerBuilder &Builder, PassManagerBase PM.add(createObjCARCOptPass()); } +static void addAddressSanitizerPass(const PassManagerBuilder &Builder, + PassManagerBase &PM) { + PM.add(createAddressSanitizerPass()); +} + void EmitAssemblyHelper::CreatePasses() { unsigned OptLevel = CodeGenOpts.OptimizationLevel; CodeGenOptions::InliningMethod Inlining = CodeGenOpts.Inlining; @@ -141,6 +146,11 @@ void EmitAssemblyHelper::CreatePasses() { PMBuilder.addExtension(PassManagerBuilder::EP_ScalarOptimizerLate, addObjCARCOptPass); } + + if (CodeGenOpts.AddressSanitizer) { + PMBuilder.addExtension(PassManagerBuilder::EP_ScalarOptimizerLate, + addAddressSanitizerPass); + } // Figure out TargetLibraryInfo. Triple TargetTriple(TheModule->getTargetTriple()); |