summaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineLICM.cpp
diff options
context:
space:
mode:
authorpaperchalice <liujunchang97@outlook.com>2024-12-11 14:25:17 +0800
committerGitHub <noreply@github.com>2024-12-11 14:25:17 +0800
commit553058f825157b33a2d7f793c811f301260b765b (patch)
tree0fefea1a58354cbb957df525a951dd615640a9b4 /llvm/lib/CodeGen/MachineLICM.cpp
parent839c8217b989a22908fdd1ec48105ff22d655fb2 (diff)
Revert "[DomTreeUpdater] Move critical edge splitting code to updater" (#119512)
Reverts llvm/llvm-project#115111 Causes #119511
Diffstat (limited to 'llvm/lib/CodeGen/MachineLICM.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineLICM.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/MachineLICM.cpp b/llvm/lib/CodeGen/MachineLICM.cpp
index d1d5509dc482..d21059189b18 100644
--- a/llvm/lib/CodeGen/MachineLICM.cpp
+++ b/llvm/lib/CodeGen/MachineLICM.cpp
@@ -24,7 +24,6 @@
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
-#include "llvm/CodeGen/MachineDomTreeUpdater.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
@@ -134,7 +133,7 @@ namespace {
AliasAnalysis *AA = nullptr; // Alias analysis info.
MachineBlockFrequencyInfo *MBFI = nullptr; // Machine block frequncy info
MachineLoopInfo *MLI = nullptr; // Current MachineLoopInfo
- MachineDomTreeUpdater *MDTU = nullptr; // Wraps current dominator tree
+ MachineDominatorTree *DT = nullptr; // Machine dominator tree for the cur loop
// State that is updated as we process loops
bool Changed = false; // True if a loop is changed.
@@ -376,9 +375,7 @@ bool MachineLICMImpl::run(MachineFunction &MF) {
.getManager()
.getResult<AAManager>(MF.getFunction())
: &LegacyPass->getAnalysis<AAResultsWrapperPass>().getAAResults();
- MachineDomTreeUpdater DTU(GET_RESULT(MachineDominatorTree, getDomTree, ),
- MachineDomTreeUpdater::UpdateStrategy::Lazy);
- MDTU = &DTU;
+ DT = GET_RESULT(MachineDominatorTree, getDomTree, );
MLI = GET_RESULT(MachineLoop, getLI, Info);
MBFI = DisableHoistingToHotterBlocks != UseBFI::None
? GET_RESULT(MachineBlockFrequency, getMBFI, Info)
@@ -424,7 +421,7 @@ bool MachineLICMImpl::run(MachineFunction &MF) {
else {
// CSEMap is initialized for loop header when the first instruction is
// being hoisted.
- MachineDomTreeNode *N = MDTU->getDomTree().getNode(CurLoop->getHeader());
+ MachineDomTreeNode *N = DT->getNode(CurLoop->getHeader());
FirstInLoop = true;
HoistOutOfLoop(N, CurLoop, CurPreheader);
CSEMap.clear();
@@ -767,7 +764,7 @@ bool MachineLICMImpl::IsGuaranteedToExecute(MachineBasicBlock *BB,
SmallVector<MachineBasicBlock*, 8> CurrentLoopExitingBlocks;
CurLoop->getExitingBlocks(CurrentLoopExitingBlocks);
for (MachineBasicBlock *CurrentLoopExitingBlock : CurrentLoopExitingBlocks)
- if (!MDTU->getDomTree().dominates(BB, CurrentLoopExitingBlock)) {
+ if (!DT->dominates(BB, CurrentLoopExitingBlock)) {
SpeculationState = SpeculateTrue;
return false;
}
@@ -1603,7 +1600,7 @@ bool MachineLICMImpl::MayCSE(MachineInstr *MI) {
unsigned Opcode = MI->getOpcode();
for (auto &Map : CSEMap) {
// Check this CSEMap's preheader dominates MI's basic block.
- if (MDTU->getDomTree().dominates(Map.first, MI->getParent())) {
+ if (DT->dominates(Map.first, MI->getParent())) {
DenseMap<unsigned, std::vector<MachineInstr *>>::iterator CI =
Map.second.find(Opcode);
// Do not CSE implicit_def so ProcessImplicitDefs can properly propagate
@@ -1671,7 +1668,7 @@ unsigned MachineLICMImpl::Hoist(MachineInstr *MI, MachineBasicBlock *Preheader,
bool HasCSEDone = false;
for (auto &Map : CSEMap) {
// Check this CSEMap's preheader dominates MI's basic block.
- if (MDTU->getDomTree().dominates(Map.first, MI->getParent())) {
+ if (DT->dominates(Map.first, MI->getParent())) {
DenseMap<unsigned, std::vector<MachineInstr *>>::iterator CI =
Map.second.find(Opcode);
if (CI != Map.second.end()) {
@@ -1735,7 +1732,7 @@ MachineLICMImpl::getCurPreheader(MachineLoop *CurLoop,
}
CurPreheader = Pred->SplitCriticalEdge(CurLoop->getHeader(), LegacyPass,
- MFAM, nullptr, MDTU);
+ MFAM, nullptr);
if (!CurPreheader) {
CurPreheader = reinterpret_cast<MachineBasicBlock *>(-1);
return nullptr;