Home | History | Annotate | Download | only in CodeGen

Lines Matching full:phi

1 //===-- PhiElimination.cpp - Eliminate PHI nodes by inserting copies ------===//
10 // This pass eliminates machine instruction PHI nodes by inserting copy
40 DisableEdgeSplitting("disable-phi-elim-edge-splitting", cl::init(false),
42 "during PHI elimination"));
45 SplitAllCriticalEdges("phi-elim-split-all-critical-edges", cl::init(false),
47 "PHI elimination"));
65 /// EliminatePHINodes - Eliminate phi nodes by inserting copy instructions
72 /// analyzePHINodes - Gather information about the PHI nodes in
74 /// register which is used in a PHI node. We map that to the BB the
94 // Defs of PHI sources which are implicit_def.
97 // Map reusable lowered PHI node -> incoming join register.
111 INITIALIZE_PASS_BEGIN(PHIElimination, "phi-node-elimination",
112 "Eliminate PHI nodes for register allocation",
115 INITIALIZE_PASS_END(PHIElimination, "phi-node-elimination",
116 "Eliminate PHI nodes for register allocation", false, false)
148 // Eliminate PHI instructions by inserting copies into predecessor blocks.
164 // Clean up the lowered PHI instructions.
179 /// EliminatePHINodes - Eliminate phi nodes by inserting copy instructions in
187 // Get an iterator to the first instruction after the last PHI node (this may
208 /// isSourceDefinedByImplicitDef - Return true if all sources of the phi node
219 /// LowerPHINode - Lower the PHI node at the top of the specified block,
227 // Unlink the PHI node from the basic block, but don't delete the PHI yet.
235 // Create a new register for the incoming PHI arguments.
238 bool reusedIncoming = false; // Is IncomingReg reused from an earlier PHI?
241 // after any remaining phi nodes) which copies the new incoming register
242 // into the phi node destination.
245 // If all sources of a PHI node are implicit_def, just emit an
250 // Can we reuse an earlier PHI node? This only happens for critical edges,
254 // An identical PHI node was already lowered. Reuse the incoming register.
295 // Since we are going to be deleting the PHI node, if it is the last use of
330 // A dead PHI's live range begins and ends at the start of the MBB, but
334 assert(OrigDestVNI && "PHI destination should be live at block entry.");
344 assert(DestVNI && "PHI destination should be live at its definition.");
349 // Adjust the VRegPHIUseCount map to account for the removal of this PHI node.
363 "Machine PHI Operands must all be virtual registers!");
366 // path the PHI.
370 // This can happen because PHI nodes may have multiple entries for the same
403 // last PHI use of SrcReg to be lowered on this CFG edge and it is not live
408 // We want to be able to insert a kill of the register if this PHI (aka,
411 // is live until the end of the block the PHI entry lives in. If the value
412 // really is dead at the PHI copy, there will be no successor blocks which
521 // Really delete the PHI instruction now, if it is not in the LoweredPHIs map.
529 /// analyzePHINodes - Gather information about the PHI nodes in here. In
531 /// used in a PHI node. We map that to the BB the vreg is coming from. This is
572 // LV doesn't consider a phi use live-out, so isLiveOut only returns true
573 // when the source register is live-out for some other reason than a phi
634 // so that a register used only in a PHI is not live out of the block. In
636 // in the predecessor basic block, so that a register used only in a PHI is live