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.
|
|
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 |