[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
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user