diff options
author | Kostya Serebryany <kcc@google.com> | 2017-05-05 23:14:40 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2017-05-05 23:14:40 +0000 |
commit | 424bfed693f98eb10660c1fb63e8eaa76cdc17a1 (patch) | |
tree | 9cd1c38bdf0f6605c37d67e6f7481f7aeb7836ce /llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp | |
parent | 40608ce4c9ba2cfbbb9976d06785699515dff3f2 (diff) | |
download | bcm5719-llvm-424bfed693f98eb10660c1fb63e8eaa76cdc17a1.tar.gz bcm5719-llvm-424bfed693f98eb10660c1fb63e8eaa76cdc17a1.zip |
[sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a hidden -mllvm flag. llvm part.
llvm-svn: 302319
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp')
-rw-r--r-- | llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp index 8bdd917a059..4bc0a713311 100644 --- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp +++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp @@ -151,6 +151,7 @@ SanitizerCoverageOptions OverrideFromCL(SanitizerCoverageOptions Options) { Options.TraceGep |= ClGEPTracing; Options.TracePC |= ClExperimentalTracePC; Options.TracePCGuard |= ClTracePCGuard; + Options.NoPrune |= !ClPruneBlocks; return Options; } @@ -380,8 +381,10 @@ static bool isFullPostDominator(const BasicBlock *BB, return true; } -static bool shouldInstrumentBlock(const Function& F, const BasicBlock *BB, const DominatorTree *DT, - const PostDominatorTree *PDT) { +static bool shouldInstrumentBlock(const Function &F, const BasicBlock *BB, + const DominatorTree *DT, + const PostDominatorTree *PDT, + const SanitizerCoverageOptions &Options) { // Don't insert coverage for unreachable blocks: we will never call // __sanitizer_cov() for them, so counting them in // NumberOfInstrumentedBlocks() might complicate calculation of code coverage @@ -395,7 +398,7 @@ static bool shouldInstrumentBlock(const Function& F, const BasicBlock *BB, const if (BB->getFirstInsertionPt() == BB->end()) return false; - if (!ClPruneBlocks || &F.getEntryBlock() == BB) + if (Options.NoPrune || &F.getEntryBlock() == BB) return true; return !(isFullDominator(BB, DT) || isFullPostDominator(BB, PDT)); @@ -434,7 +437,7 @@ bool SanitizerCoverageModule::runOnFunction(Function &F) { &getAnalysis<PostDominatorTreeWrapperPass>(F).getPostDomTree(); for (auto &BB : F) { - if (shouldInstrumentBlock(F, &BB, DT, PDT)) + if (shouldInstrumentBlock(F, &BB, DT, PDT, Options)) BlocksToInstrument.push_back(&BB); for (auto &Inst : BB) { if (Options.IndirectCalls) { |