mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[BPI][NFC] Reuse post dominantor tree from analysis manager when available
Summary: Currenlty BPI unconditionally creates post dominator tree each time. While this is not incorrect we can save compile time by reusing existing post dominator tree (when it's valid) provided by analysis manager. Reviewers: skatkov, taewookoh, yrouban Reviewed By: skatkov Subscribers: hiraditya, steven_wu, dexonsmith, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78987
This commit is contained in:
parent
5d3d0aa563
commit
850ecb1d9c
@ -55,8 +55,9 @@ public:
|
||||
BranchProbabilityInfo() = default;
|
||||
|
||||
BranchProbabilityInfo(const Function &F, const LoopInfo &LI,
|
||||
const TargetLibraryInfo *TLI = nullptr) {
|
||||
calculate(F, LI, TLI);
|
||||
const TargetLibraryInfo *TLI = nullptr,
|
||||
PostDominatorTree *PDT = nullptr) {
|
||||
calculate(F, LI, TLI, PDT);
|
||||
}
|
||||
|
||||
BranchProbabilityInfo(BranchProbabilityInfo &&Arg)
|
||||
@ -135,7 +136,7 @@ public:
|
||||
}
|
||||
|
||||
void calculate(const Function &F, const LoopInfo &LI,
|
||||
const TargetLibraryInfo *TLI = nullptr);
|
||||
const TargetLibraryInfo *TLI, PostDominatorTree *PDT);
|
||||
|
||||
/// Forget analysis results for the given basic block.
|
||||
void eraseBlock(const BasicBlock *BB);
|
||||
|
@ -63,7 +63,7 @@ class LazyBranchProbabilityInfoPass : public FunctionPass {
|
||||
BranchProbabilityInfo &getCalculated() {
|
||||
if (!Calculated) {
|
||||
assert(F && LI && "call setAnalysis");
|
||||
BPI.calculate(*F, *LI, TLI);
|
||||
BPI.calculate(*F, *LI, TLI, nullptr);
|
||||
Calculated = true;
|
||||
}
|
||||
return BPI;
|
||||
|
@ -61,6 +61,7 @@ INITIALIZE_PASS_BEGIN(BranchProbabilityInfoWrapperPass, "branch-prob",
|
||||
"Branch Probability Analysis", false, true)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(PostDominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_END(BranchProbabilityInfoWrapperPass, "branch-prob",
|
||||
"Branch Probability Analysis", false, true)
|
||||
|
||||
@ -980,7 +981,8 @@ void BranchProbabilityInfo::eraseBlock(const BasicBlock *BB) {
|
||||
}
|
||||
|
||||
void BranchProbabilityInfo::calculate(const Function &F, const LoopInfo &LI,
|
||||
const TargetLibraryInfo *TLI) {
|
||||
const TargetLibraryInfo *TLI,
|
||||
PostDominatorTree *PDT) {
|
||||
LLVM_DEBUG(dbgs() << "---- Branch Probability Info : " << F.getName()
|
||||
<< " ----\n\n");
|
||||
LastF = &F; // Store the last function we ran on for printing.
|
||||
@ -1008,10 +1010,15 @@ void BranchProbabilityInfo::calculate(const Function &F, const LoopInfo &LI,
|
||||
LLVM_DEBUG(dbgs() << "\n");
|
||||
}
|
||||
|
||||
std::unique_ptr<PostDominatorTree> PDT =
|
||||
std::make_unique<PostDominatorTree>(const_cast<Function &>(F));
|
||||
computePostDominatedByUnreachable(F, PDT.get());
|
||||
computePostDominatedByColdCall(F, PDT.get());
|
||||
std::unique_ptr<PostDominatorTree> PDTPtr;
|
||||
|
||||
if (!PDT) {
|
||||
PDTPtr = std::make_unique<PostDominatorTree>(const_cast<Function &>(F));
|
||||
PDT = PDTPtr.get();
|
||||
}
|
||||
|
||||
computePostDominatedByUnreachable(F, PDT);
|
||||
computePostDominatedByColdCall(F, PDT);
|
||||
|
||||
// Walk the basic blocks in post-order so that we can build up state about
|
||||
// the successors of a block iteratively.
|
||||
@ -1057,6 +1064,7 @@ void BranchProbabilityInfoWrapperPass::getAnalysisUsage(
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<LoopInfoWrapperPass>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
AU.addRequired<PostDominatorTreeWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
@ -1064,7 +1072,9 @@ bool BranchProbabilityInfoWrapperPass::runOnFunction(Function &F) {
|
||||
const LoopInfo &LI = getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
|
||||
const TargetLibraryInfo &TLI =
|
||||
getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F);
|
||||
BPI.calculate(F, LI, &TLI);
|
||||
PostDominatorTree &PDT =
|
||||
getAnalysis<PostDominatorTreeWrapperPass>().getPostDomTree();
|
||||
BPI.calculate(F, LI, &TLI, &PDT);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1079,7 +1089,9 @@ AnalysisKey BranchProbabilityAnalysis::Key;
|
||||
BranchProbabilityInfo
|
||||
BranchProbabilityAnalysis::run(Function &F, FunctionAnalysisManager &AM) {
|
||||
BranchProbabilityInfo BPI;
|
||||
BPI.calculate(F, AM.getResult<LoopAnalysis>(F), &AM.getResult<TargetLibraryAnalysis>(F));
|
||||
BPI.calculate(F, AM.getResult<LoopAnalysis>(F),
|
||||
&AM.getResult<TargetLibraryAnalysis>(F),
|
||||
&AM.getResult<PostDominatorTreeAnalysis>(F));
|
||||
return BPI;
|
||||
}
|
||||
|
||||
|
@ -36,8 +36,7 @@ OptimizationRemarkEmitter::OptimizationRemarkEmitter(const Function *F)
|
||||
LI.analyze(DT);
|
||||
|
||||
// Then compute BranchProbabilityInfo.
|
||||
BranchProbabilityInfo BPI;
|
||||
BPI.calculate(*F, LI);
|
||||
BranchProbabilityInfo BPI(*F, LI);
|
||||
|
||||
// Finally compute BFI.
|
||||
OwnedBFI = std::make_unique<BlockFrequencyInfo>(*F, BPI, LI);
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include "llvm/Analysis/LoopAnalysisManager.h"
|
||||
#include "llvm/Analysis/LoopInfo.h"
|
||||
#include "llvm/Analysis/LoopPass.h"
|
||||
#include "llvm/Analysis/PostDominators.h"
|
||||
#include "llvm/Analysis/ScalarEvolution.h"
|
||||
#include "llvm/Analysis/ScalarEvolutionExpander.h"
|
||||
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
|
||||
@ -1767,10 +1768,12 @@ IntersectUnsignedRange(ScalarEvolution &SE,
|
||||
PreservedAnalyses IRCEPass::run(Function &F, FunctionAnalysisManager &AM) {
|
||||
auto &SE = AM.getResult<ScalarEvolutionAnalysis>(F);
|
||||
auto &DT = AM.getResult<DominatorTreeAnalysis>(F);
|
||||
auto *PDT = AM.getCachedResult<PostDominatorTreeAnalysis>(F);
|
||||
LoopInfo &LI = AM.getResult<LoopAnalysis>(F);
|
||||
TargetLibraryInfo &TLI = AM.getResult<TargetLibraryAnalysis>(F);
|
||||
|
||||
BranchProbabilityInfo BPI;
|
||||
BPI.calculate(F, LI);
|
||||
// TODO: Request BPI through AM directly?
|
||||
BranchProbabilityInfo BPI(F, LI, &TLI, PDT);
|
||||
InductiveRangeCheckElimination IRCE(SE, &BPI, DT, LI);
|
||||
|
||||
bool Changed = false;
|
||||
|
@ -362,8 +362,7 @@ PreservedAnalyses LoopPredicationPass::run(Loop &L, LoopAnalysisManager &AM,
|
||||
// For the new PM, we also can't use BranchProbabilityInfo as an analysis
|
||||
// pass. Function analyses need to be preserved across loop transformations
|
||||
// but BPI is not preserved, hence a newly built one is needed.
|
||||
BranchProbabilityInfo BPI;
|
||||
BPI.calculate(*F, AR.LI);
|
||||
BranchProbabilityInfo BPI(*F, AR.LI, &AR.TLI);
|
||||
LoopPredication LP(&AR.AA, &AR.DT, &AR.SE, &AR.LI, &BPI);
|
||||
if (!LP.runOnLoop(&L))
|
||||
return PreservedAnalyses::all();
|
||||
|
@ -50,6 +50,7 @@
|
||||
; CHECK-NEXT: Remove unreachable blocks from the CFG
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Constant Hoisting
|
||||
@ -85,6 +86,7 @@
|
||||
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
|
@ -30,6 +30,7 @@
|
||||
; CHECK-NEXT: Remove unreachable blocks from the CFG
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Constant Hoisting
|
||||
@ -70,6 +71,7 @@
|
||||
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
|
@ -42,6 +42,7 @@
|
||||
; CHECK-NEXT: Remove unreachable blocks from the CFG
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Constant Hoisting
|
||||
@ -67,6 +68,7 @@
|
||||
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
|
@ -61,8 +61,9 @@
|
||||
; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis on foo
|
||||
; These next two can appear in any order since they are accessed as parameters
|
||||
; on the same call to BlockFrequencyInfo::calculate.
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: LoopAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
|
||||
@ -163,7 +164,6 @@
|
||||
; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
|
||||
; CHECK-O23SZ-NEXT: Finished {{.*}}Function pass manager run
|
||||
; CHECK-O-NEXT: Running pass: ADCEPass
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run.
|
||||
|
@ -70,8 +70,9 @@
|
||||
; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis on foo
|
||||
; These next two can appear in any order since they are accessed as parameters
|
||||
; on the same call to BlockFrequencyInfo::calculate.
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: LoopAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass on foo
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run
|
||||
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
|
||||
@ -171,7 +172,6 @@
|
||||
; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
|
||||
; CHECK-O23SZ-NEXT: Finished {{.*}}Function pass manager run
|
||||
; CHECK-O-NEXT: Running pass: ADCEPass
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O3-NEXT: Running pass: ControlHeightReductionPass on foo
|
||||
|
@ -81,6 +81,7 @@
|
||||
; These next two can appear in any order since they are accessed as parameters
|
||||
; on the same call to BlockFrequencyInfo::calculate.
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: PostDominatorTreeAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: LoopAnalysis on foo
|
||||
; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis on foo
|
||||
; CHECK-O-NEXT: Invalidating all non-preserved analyses for:
|
||||
@ -137,8 +138,9 @@
|
||||
; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis on foo
|
||||
; These next two can appear in any order since they are accessed as parameters
|
||||
; on the same call to BlockFrequencyInfo::calculate.
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: LoopAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: PostDominatorTreeAnalysis on foo
|
||||
; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass
|
||||
; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass
|
||||
; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass
|
||||
@ -209,7 +211,6 @@
|
||||
; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
|
||||
; CHECK-O23SZ-NEXT: Finished {{.*}}Function pass manager run
|
||||
; CHECK-O-NEXT: Running pass: ADCEPass
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O3-NEXT: Running pass: ControlHeightReductionPass on foo
|
||||
|
@ -70,8 +70,9 @@
|
||||
; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis on foo
|
||||
; These next two can appear in any order since they are accessed as parameters
|
||||
; on the same call to BlockFrequencyInfo::calculate.
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: LoopAnalysis on foo
|
||||
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass on foo
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run
|
||||
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
|
||||
@ -170,7 +171,6 @@
|
||||
; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
|
||||
; CHECK-O23SZ-NEXT: Finished {{.*}}Function pass manager run
|
||||
; CHECK-O-NEXT: Running pass: ADCEPass
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O3-NEXT: Running pass: ControlHeightReductionPass on foo
|
||||
|
@ -37,6 +37,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
@ -83,6 +84,7 @@
|
||||
; CHECK-NEXT: Combine redundant instructions
|
||||
; CHECK-NEXT: Conditionally eliminate dead library calls
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
@ -187,6 +189,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Dead Global Elimination
|
||||
@ -211,6 +214,7 @@
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
; CHECK-NEXT: Optimization Remark Emitter
|
||||
; CHECK-NEXT: Loop Distribution
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Scalar Evolution Analysis
|
||||
@ -280,6 +284,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Canonicalize natural loops
|
||||
@ -307,6 +312,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Pass Arguments:
|
||||
@ -314,6 +320,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
@ -88,6 +89,7 @@
|
||||
; CHECK-NEXT: Combine redundant instructions
|
||||
; CHECK-NEXT: Conditionally eliminate dead library calls
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
@ -192,6 +194,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Dead Global Elimination
|
||||
@ -216,6 +219,7 @@
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
; CHECK-NEXT: Optimization Remark Emitter
|
||||
; CHECK-NEXT: Loop Distribution
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Scalar Evolution Analysis
|
||||
@ -285,6 +289,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Canonicalize natural loops
|
||||
@ -312,6 +317,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Pass Arguments:
|
||||
@ -319,6 +325,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
@ -174,6 +175,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Dead Global Elimination
|
||||
@ -198,6 +200,7 @@
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
; CHECK-NEXT: Optimization Remark Emitter
|
||||
; CHECK-NEXT: Loop Distribution
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Scalar Evolution Analysis
|
||||
@ -267,6 +270,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Canonicalize natural loops
|
||||
@ -294,6 +298,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
; CHECK-NEXT: Pass Arguments:
|
||||
@ -301,6 +306,7 @@
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Branch Probability Analysis
|
||||
; CHECK-NEXT: Block Frequency Analysis
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
; CHECK: Dominator Tree Construction
|
||||
; CHECK: Natural Loop Information
|
||||
; CHECK: Sparse Conditional Constant Propagation
|
||||
; CHECK: Post-Dominator Tree Construction
|
||||
; CHECK-NOT: Dominator Tree Construction
|
||||
; CHECK-NOT: Natural Loop Information
|
||||
; CHECK-NOT: Globals Alias Analysis
|
||||
|
Loading…
Reference in New Issue
Block a user