Index: lib/Transforms/Instrumentation/SanitizerCoverage.cpp =================================================================== --- lib/Transforms/Instrumentation/SanitizerCoverage.cpp +++ lib/Transforms/Instrumentation/SanitizerCoverage.cpp @@ -31,7 +31,6 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallVector.h" #include "llvm/Analysis/EHPersonalities.h" -#include "llvm/Analysis/PostDominators.h" #include "llvm/IR/CFG.h" #include "llvm/IR/CallSite.h" #include "llvm/IR/DataLayout.h" @@ -169,7 +168,6 @@ void getAnalysisUsage(AnalysisUsage &AU) const override { AU.addRequired(); - AU.addRequired(); } private: @@ -367,23 +365,8 @@ return true; } -// True if block has predecessors and it postdominates all of them. -static bool isFullPostDominator(const BasicBlock *BB, - const PostDominatorTree *PDT) { - if (pred_begin(BB) == pred_end(BB)) - return false; - - for (const BasicBlock *PRED : make_range(pred_begin(BB), pred_end(BB))) { - if (!PDT->dominates(BB, PRED)) - return false; - } - - return true; -} - 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 @@ -401,7 +384,7 @@ if (Options.NoPrune || &F.getEntryBlock() == BB) return true; - return !(isFullDominator(BB, DT) || isFullPostDominator(BB, PDT)); + return !isFullDominator(BB, DT); } bool SanitizerCoverageModule::runOnFunction(Function &F) { @@ -433,11 +416,9 @@ const DominatorTree *DT = &getAnalysis(F).getDomTree(); - const PostDominatorTree *PDT = - &getAnalysis(F).getPostDomTree(); for (auto &BB : F) { - if (shouldInstrumentBlock(F, &BB, DT, PDT, Options)) + if (shouldInstrumentBlock(F, &BB, DT, Options)) BlocksToInstrument.push_back(&BB); for (auto &Inst : BB) { if (Options.IndirectCalls) { @@ -719,7 +700,6 @@ "ModulePass", false, false) INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass) -INITIALIZE_PASS_DEPENDENCY(PostDominatorTreeWrapperPass) INITIALIZE_PASS_END(SanitizerCoverageModule, "sancov", "SanitizerCoverage: TODO." "ModulePass",