Home | History | Annotate | Download | only in Utils

Lines Matching defs:PHI

281   /// dominating definitions for non-PHI blocks.
291 // If this block already needs a PHI, there is nothing to do here.
299 // Need a PHI here.
314 /// FindAvailableVal - If this block requires a PHI, first check if an
315 /// existing PHI matches the PHI placement and reaching definitions computed
316 /// earlier, and if not, create a new PHI. Visit all the block's
318 /// the incoming values for a new PHI.
326 // Check if there needs to be a PHI in BB.
330 // Look for an existing PHI.
335 ValT PHI = Traits::CreateEmptyPHI(Info->BB, Info->NumPreds, Updater);
336 Info->AvailableVal = PHI;
337 (*AvailableVals)[Info->BB] = PHI;
354 // Check if this block contains a newly added PHI.
355 PhiT *PHI = Traits::ValueIsNewPHI(Info->AvailableVal, Updater);
356 if (!PHI)
366 Traits::AddPHIOperand(PHI, PredInfo->AvailableVal, Pred);
369 DEBUG(dbgs() << " Inserted PHI: " << *PHI << "\n");
372 if (InsertedPHIs) InsertedPHIs->push_back(PHI);
376 /// FindExistingPHI - Look through the PHI nodes in a block to see if any of
395 /// CheckIfPHIMatches - Check if a PHI node matches the placement and values
397 bool CheckIfPHIMatches(PhiT *PHI) {
399 WorkList.push_back(PHI);
401 // Mark that the block containing this PHI has been visited.
402 BBMap[PHI->getParent()]->PHITag = PHI;
405 PHI = WorkList.pop_back_val();
407 // Iterate through the PHI's incoming values.
408 for (typename Traits::PHI_iterator I = Traits::PHI_begin(PHI),
409 E = Traits::PHI_end(PHI); I != E; ++I) {
423 // Check if the value is a PHI in the correct block.
428 // If this block has already been visited, check if this PHI matches.
442 /// RecordMatchingPHIs - For each PHI node that matches, record it in both
447 if (PhiT *PHI = (*I)->PHITag) {
448 BlkT *BB = PHI->getParent();
449 ValT PHIVal = Traits::GetPHIValue(PHI);