mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-14 07:31:53 +00:00
Explicitly require DominatorTreeAnalysis pass for instsimplify pass.
Summary: DominatorTreeAnalysis is always required by instsimplify. Reviewers: davidxl, danielcdh Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D24173 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280432 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
79dbe29bca
commit
7946689952
@ -90,6 +90,7 @@ namespace {
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.setPreservesCFG();
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<AssumptionCacheTracker>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
@ -99,9 +100,8 @@ namespace {
|
||||
if (skipFunction(F))
|
||||
return false;
|
||||
|
||||
const DominatorTreeWrapperPass *DTWP =
|
||||
getAnalysisIfAvailable<DominatorTreeWrapperPass>();
|
||||
const DominatorTree *DT = DTWP ? &DTWP->getDomTree() : nullptr;
|
||||
const DominatorTree *DT =
|
||||
&getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
const TargetLibraryInfo *TLI =
|
||||
&getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
AssumptionCache *AC =
|
||||
@ -115,6 +115,7 @@ char InstSimplifier::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(InstSimplifier, "instsimplify",
|
||||
"Remove redundant instructions", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
|
||||
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(InstSimplifier, "instsimplify",
|
||||
"Remove redundant instructions", false, false)
|
||||
@ -127,10 +128,10 @@ FunctionPass *llvm::createInstructionSimplifierPass() {
|
||||
|
||||
PreservedAnalyses InstSimplifierPass::run(Function &F,
|
||||
FunctionAnalysisManager &AM) {
|
||||
auto *DT = AM.getCachedResult<DominatorTreeAnalysis>(F);
|
||||
auto &DT = AM.getResult<DominatorTreeAnalysis>(F);
|
||||
auto &TLI = AM.getResult<TargetLibraryAnalysis>(F);
|
||||
auto &AC = AM.getResult<AssumptionAnalysis>(F);
|
||||
bool Changed = runImpl(F, DT, &TLI, &AC);
|
||||
bool Changed = runImpl(F, &DT, &TLI, &AC);
|
||||
if (!Changed)
|
||||
return PreservedAnalyses::all();
|
||||
// FIXME: This should also 'preserve the CFG'.
|
||||
|
Loading…
Reference in New Issue
Block a user