mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
[PM] Lift the analyses into the interface for
SplitLandingPadPredecessors and remove the Pass argument from its interface. Another step to the utilities being usable with both old and new pass managers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226426 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -523,10 +523,11 @@ BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB,
|
||||
/// exits).
|
||||
///
|
||||
void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB,
|
||||
ArrayRef<BasicBlock*> Preds,
|
||||
ArrayRef<BasicBlock *> Preds,
|
||||
const char *Suffix1, const char *Suffix2,
|
||||
Pass *P,
|
||||
SmallVectorImpl<BasicBlock*> &NewBBs) {
|
||||
SmallVectorImpl<BasicBlock *> &NewBBs,
|
||||
AliasAnalysis *AA, DominatorTree *DT,
|
||||
LoopInfo *LI, bool PreserveLCSSA) {
|
||||
assert(OrigBB->isLandingPad() && "Trying to split a non-landing pad!");
|
||||
|
||||
// Create a new basic block for OrigBB's predecessors listed in Preds. Insert
|
||||
@ -549,18 +550,11 @@ void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB,
|
||||
Preds[i]->getTerminator()->replaceUsesOfWith(OrigBB, NewBB1);
|
||||
}
|
||||
|
||||
// Update DominatorTree, LoopInfo, and LCCSA analysis information.
|
||||
auto *DTWP = P->getAnalysisIfAvailable<DominatorTreeWrapperPass>();
|
||||
auto *DT = DTWP ? &DTWP->getDomTree() : nullptr;
|
||||
auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>();
|
||||
auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr;
|
||||
bool PreserveLCSSA = P->mustPreserveAnalysisID(LCSSAID);
|
||||
bool HasLoopExit = false;
|
||||
UpdateAnalysisInformation(OrigBB, NewBB1, Preds, DT, LI, PreserveLCSSA,
|
||||
HasLoopExit);
|
||||
|
||||
// Update the PHI nodes in OrigBB with the values coming from NewBB1.
|
||||
AliasAnalysis *AA = P ? P->getAnalysisIfAvailable<AliasAnalysis>() : nullptr;
|
||||
UpdatePHINodes(OrigBB, NewBB1, Preds, BI1, AA, HasLoopExit);
|
||||
|
||||
// Move the remaining edges from OrigBB to point to NewBB2.
|
||||
|
Reference in New Issue
Block a user