Go to the source code of this file.
|
| STATISTIC (NumLowered, "Number of phis lowered") |
|
| STATISTIC (NumCriticalEdgesSplit, "Number of critical edges split") |
|
| STATISTIC (NumReused, "Number of reused lowered phis") |
|
| INITIALIZE_PASS_BEGIN (PHIElimination, DEBUG_TYPE, "Eliminate PHI nodes for register allocation", false, false) INITIALIZE_PASS_END(PHIElimination |
|
static bool | isImplicitlyDefined (unsigned VirtReg, const MachineRegisterInfo &MRI) |
| Return true if all defs of VirtReg are implicit-defs. More...
|
|
static bool | allPhiOperandsUndefined (const MachineInstr &MPhi, const MachineRegisterInfo &MRI) |
| Return true if all sources of the phi node are implicit_def's, or undef's. More...
|
|
◆ DEBUG_TYPE
◆ allPhiOperandsUndefined()
Return true if all sources of the phi node are implicit_def's, or undef's.
Definition at line 224 of file PHIElimination.cpp.
References llvm::LiveRange::addSegment(), assert(), llvm::MachineBasicBlock::begin(), llvm::LiveRange::begin(), llvm::BuildMI(), llvm::LoopBase< BlockT, LoopT >::contains(), llvm::LiveRange::createDeadDef(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::dbgs(), llvm::VNInfo::def, DefMI, llvm::MachineFunction::DeleteMachineInstr(), llvm::MachineBasicBlock::dump(), E, llvm::MachineBasicBlock::empty(), llvm::MachineBasicBlock::end(), llvm::LiveRange::end(), llvm::LiveRange::endIndex(), entry, llvm::LiveVariables::VarInfo::findKill(), llvm::findPHICopyInsertPoint(), llvm::MachineBasicBlock::front(), llvm::MCInstrInfo::get(), llvm::SlotIndex::getDeadSlot(), llvm::MachineInstr::getDebugLoc(), llvm::MachineBasicBlock::getFirstTerminator(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineLoopInfo::getLoopFor(), llvm::MachineOperand::getMBB(), llvm::LiveRange::getNextValue(), llvm::MachineBasicBlock::getNumber(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::SlotIndex::getRegSlot(), llvm::MachineOperand::getSubReg(), llvm::MachineFunction::getSubtarget(), llvm::LiveRange::getVNInfoAt(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::SlotIndex::isDead(), llvm::MachineOperand::isDead(), llvm::MachineBasicBlock::isEHPad(), llvm::MachineInstr::isImplicitDef(), isImplicitlyDefined(), isLiveOut(), llvm::MachineInstr::isPHI(), llvm::MachineOperand::isUndef(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm::LiveRange::liveAt(), LLVM_DEBUG, MRI, NoPhiElimLiveOutEarlyExit, llvm::printMBBReference(), llvm::printReg(), Reg, llvm::MachineBasicBlock::remove(), llvm::LiveRange::removeSegment(), llvm::LiveRange::removeValNo(), SI, llvm::SplitAllCriticalEdges(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::MachineBasicBlock::succ_begin(), llvm::MachineBasicBlock::succ_end(), llvm::MachineBasicBlock::succ_size(), llvm::MachineBasicBlock::successors(), TII, and VI.
◆ INITIALIZE_PASS_BEGIN()
◆ isImplicitlyDefined()
◆ STATISTIC() [1/3]
STATISTIC |
( |
NumLowered |
, |
|
|
"Number of phis lowered" |
|
|
) |
| |
◆ STATISTIC() [2/3]
STATISTIC |
( |
NumCriticalEdgesSplit |
, |
|
|
"Number of critical edges split" |
|
|
) |
| |
◆ STATISTIC() [3/3]
STATISTIC |
( |
NumReused |
, |
|
|
"Number of reused lowered phis" |
|
|
) |
| |
◆ allocation
Eliminate PHI nodes for register allocation |
◆ DEBUG_TYPE
◆ DisableEdgeSplitting
◆ false
◆ NoPhiElimLiveOutEarlyExit
cl::opt<bool> NoPhiElimLiveOutEarlyExit("no-phi-elim-live-out-early-exit", cl::init(false), cl::Hidden, cl::desc("Do not use an early exit if isLiveOutPastPHIs returns true.")) |
|
static |
◆ SplitAllCriticalEdges