Lines Matching defs:phi
260 // Firstly, make the phi live, and try to assign it to an input
262 for (Phi* phi : *block->phis()) {
263 phi->SetNoSpillOrHint();
264 TryAllocateToInput(phi);
266 // Secondly try to assign the phi to a free register.
267 for (Phi* phi : *block->phis()) {
268 if (phi->result().operand().IsAllocated()) continue;
269 compiler::InstructionOperand allocation = TryAllocateRegister(phi);
271 phi->result().SetAllocated(
275 phi, ProcessingState(compilation_unit_, block_it_));
277 << "phi (new reg) " << phi->result().operand() << std::endl;
282 for (Phi* phi : *block->phis()) {
283 if (phi->result().operand().IsAllocated()) continue;
284 AllocateSpillSlot(phi);
286 phi->result().SetAllocated(phi->spill_slot());
289 phi, ProcessingState(compilation_unit_, block_it_));
291 << "phi (stack) " << phi->result().operand() << std::endl;
515 for (Phi* phi : *phis) {
516 Input& input = phi->input(block->predecessor_id());
519 for (Phi* phi : *phis) UpdateUse(&phi->input(block->predecessor_id()));
545 void StraightForwardRegisterAllocator::TryAllocateToInput(Phi* phi) {
547 for (Input& input : *phi) {
551 phi->result().SetAllocated(ForceAllocate(reg, phi));
554 phi, ProcessingState(compilation_unit_, block_it_));
556 << "phi (reuse) " << input.operand() << std::endl;