LLVM: lib/CodeGen/PHIElimination.cpp File Reference (original ) (raw )Go to the source code of this file.
Functions
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 (Register VirtReg, const MachineRegisterInfo &MRI )
Return true if all defs of VirtReg are implicit-defs.
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.
◆ DEBUG_TYPE#define DEBUG_TYPE "phi-node-elimination"
◆ allPhiOperandsUndefined()◆ INITIALIZE_PASS_BEGIN()
INITIALIZE_PASS_BEGIN
(
PHIElimination
,
DEBUG_TYPE
,
"Eliminate PHI nodes for register allocation"
,
false
,
false
)
◆ isImplicitlyDefined()◆ STATISTIC() [1/3]
STATISTIC
(
NumCriticalEdgesSplit
,
"Number of critical edges split"
)
◆ STATISTIC() [2/3]
STATISTIC
(
NumLowered
,
"Number of phis lowered"
)
◆ STATISTIC() [3/3]
STATISTIC
(
NumReused
,
"Number of reused lowered phis"
)
◆ allocation◆ DEBUG_TYPE◆ DisableEdgeSplitting
cl::opt < bool > DisableEdgeSplitting("disable-phi-elim-edge-splitting", cl::init(false), cl::Hidden, cl::desc ("Disable critical edge splitting " "during PHI elimination")) ( "disable-phi-elim-edge-splitting" , cl::init(false) , cl::Hidden , cl::desc ("Disable critical edge splitting " "during PHI elimination") )
static
◆ 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.")) ( "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
cl::opt < bool > SplitAllCriticalEdges("phi-elim-split-all-critical-edges", cl::init(false), cl::Hidden, cl::desc ("Split all critical edges during " "PHI elimination")) ( "phi-elim-split-all-critical-edges" , cl::init(false) , cl::Hidden , cl::desc ("Split all critical edges during " "PHI elimination") )
static