Home | History | Annotate | Download | only in optimizing

Lines Matching defs:phi

22   // Add to the worklist phis referenced by non-phi instructions.
26 HPhi* phi = it.Current()->AsPhi();
27 if (phi->HasEnvironmentUses()) {
28 // TODO: Do we want to keep that phi alive?
31 for (HUseIterator<HInstruction> it(phi->GetUses()); !it.Done(); it.Advance()) {
35 worklist_.Add(phi);
36 phi->SetLive();
38 phi->SetDead();
44 // Process the worklist by propagating liveness to phi inputs.
46 HPhi* phi = worklist_.Pop();
47 for (HInputIterator it(phi); !it.Done(); it.Advance()) {
82 HPhi* phi = worklist_.Pop();
84 // If the phi has already been processed, continue.
85 if (!phi->IsInBlock()) {
89 // Find if the inputs of the phi are the same instruction.
90 HInstruction* candidate = phi->InputAt(0);
91 // A loop phi cannot have itself as the first phi.
92 DCHECK_NE(phi, candidate);
94 for (size_t i = 1; i < phi->InputCount(); ++i) {
95 HInstruction* input = phi->InputAt(i);
96 // For a loop phi, If the input is the phi, the phi is still candidate for
98 if (input != candidate && input != phi) {
109 if (phi->IsInLoop()) {
110 // Because we're updating the users of this phi, we may have new
111 // phis candidate for elimination if this phi is in a loop. Add phis that
112 // used this phi to the worklist.
113 for (HUseIterator<HInstruction> it(phi->GetUses()); !it.Done(); it.Advance()) {
121 phi->ReplaceWith(candidate);
122 phi->GetBlock()->RemovePhi(phi);