diff options
author | Alexey Samsonov <vonosmas@gmail.com> | 2015-05-07 18:31:29 +0000 |
---|---|---|
committer | Alexey Samsonov <vonosmas@gmail.com> | 2015-05-07 18:31:29 +0000 |
commit | 3f3b3abe2bd01805e6df86667bd8da5e3cb2dd6c (patch) | |
tree | 5ece5c231547d082a3ed6833af3cd9eca6506c28 /clang/lib/CodeGen/BackendUtil.cpp | |
parent | f3c94b1e3cf53ae635e6901ded8a7b52c03e7645 (diff) | |
download | llvm-3f3b3abe2bd01805e6df86667bd8da5e3cb2dd6c.zip llvm-3f3b3abe2bd01805e6df86667bd8da5e3cb2dd6c.tar.gz llvm-3f3b3abe2bd01805e6df86667bd8da5e3cb2dd6c.tar.bz2 |
[SanitizerCoverage] Give clang-cc1 the power to precisly specify needed sanitizier coverage mode.
Summary:
The next step is to add user-friendly control over these options
to driver via -fsanitize-coverage= option.
Test Plan: regression test suite
Reviewers: kcc
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D9545
llvm-svn: 236756
Diffstat (limited to 'clang/lib/CodeGen/BackendUtil.cpp')
-rw-r--r-- | clang/lib/CodeGen/BackendUtil.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index c889455..0206ad5 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -189,7 +189,14 @@ static void addSanitizerCoveragePass(const PassManagerBuilder &Builder, const PassManagerBuilderWrapper &BuilderWrapper = static_cast<const PassManagerBuilderWrapper&>(Builder); const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); - PM.add(createSanitizerCoverageModulePass(CGOpts.SanitizeCoverage)); + SanitizerCoverageOptions Opts; + Opts.CoverageType = + static_cast<SanitizerCoverageOptions::Type>(CGOpts.SanitizeCoverageType); + Opts.IndirectCalls = CGOpts.SanitizeCoverageIndirectCalls; + Opts.TraceBB = CGOpts.SanitizeCoverageTraceBB; + Opts.TraceCmp = CGOpts.SanitizeCoverageTraceCmp; + Opts.Use8bitCounters = CGOpts.SanitizeCoverage8bitCounters; + PM.add(createSanitizerCoverageModulePass(Opts)); } static void addAddressSanitizerPasses(const PassManagerBuilder &Builder, @@ -306,7 +313,7 @@ void EmitAssemblyHelper::CreatePasses() { addBoundsCheckingPass); } - if (CodeGenOpts.SanitizeCoverage) { + if (CodeGenOpts.SanitizeCoverageType) { PMBuilder.addExtension(PassManagerBuilder::EP_OptimizerLast, addSanitizerCoveragePass); PMBuilder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0, |