mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-05 19:29:54 +00:00
[AA] Make BasicAA just require domtree.
This doesn't change how many times we construct domtrees in the normal pipeline, and it removes fragility and instability where basic-aa may not be run in time to see domtrees because they happen to be constructed afterward. This isn't quite as clean as the change to memdep because there is a mode where basic-aa specifically runs without domtrees -- in the hacking version used by function-attrs with the legacy pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@263234 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c0ed3027df
commit
746124bd5b
@ -1612,7 +1612,7 @@ BasicAAResult BasicAA::run(Function &F, AnalysisManager<Function> &AM) {
|
||||
return BasicAAResult(F.getParent()->getDataLayout(),
|
||||
AM.getResult<TargetLibraryAnalysis>(F),
|
||||
AM.getResult<AssumptionAnalysis>(F),
|
||||
AM.getCachedResult<DominatorTreeAnalysis>(F),
|
||||
&AM.getResult<DominatorTreeAnalysis>(F),
|
||||
AM.getCachedResult<LoopAnalysis>(F));
|
||||
}
|
||||
|
||||
@ -1626,6 +1626,7 @@ void BasicAAWrapperPass::anchor() {}
|
||||
INITIALIZE_PASS_BEGIN(BasicAAWrapperPass, "basicaa",
|
||||
"Basic Alias Analysis (stateless AA impl)", true, true)
|
||||
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
|
||||
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(BasicAAWrapperPass, "basicaa",
|
||||
"Basic Alias Analysis (stateless AA impl)", true, true)
|
||||
@ -1637,12 +1638,11 @@ FunctionPass *llvm::createBasicAAWrapperPass() {
|
||||
bool BasicAAWrapperPass::runOnFunction(Function &F) {
|
||||
auto &ACT = getAnalysis<AssumptionCacheTracker>();
|
||||
auto &TLIWP = getAnalysis<TargetLibraryInfoWrapperPass>();
|
||||
auto *DTWP = getAnalysisIfAvailable<DominatorTreeWrapperPass>();
|
||||
auto &DTWP = getAnalysis<DominatorTreeWrapperPass>();
|
||||
auto *LIWP = getAnalysisIfAvailable<LoopInfoWrapperPass>();
|
||||
|
||||
Result.reset(new BasicAAResult(F.getParent()->getDataLayout(), TLIWP.getTLI(),
|
||||
ACT.getAssumptionCache(F),
|
||||
DTWP ? &DTWP->getDomTree() : nullptr,
|
||||
ACT.getAssumptionCache(F), &DTWP.getDomTree(),
|
||||
LIWP ? &LIWP->getLoopInfo() : nullptr));
|
||||
|
||||
return false;
|
||||
@ -1651,6 +1651,7 @@ bool BasicAAWrapperPass::runOnFunction(Function &F) {
|
||||
void BasicAAWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.setPreservesAll();
|
||||
AU.addRequired<AssumptionCacheTracker>();
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user