Home | History | Annotate | Download | only in Utils

Lines Matching defs:PHI

294   /// dominating definitions for non-PHI blocks.
304 // If this block already needs a PHI, there is nothing to do here.
312 // Need a PHI here.
327 /// FindAvailableVal - If this block requires a PHI, first check if an
328 /// existing PHI matches the PHI placement and reaching definitions computed
329 /// earlier, and if not, create a new PHI. Visit all the block's
331 /// the incoming values for a new PHI.
339 // Check if there needs to be a PHI in BB.
343 // Look for an existing PHI.
348 ValT PHI = Traits::CreateEmptyPHI(Info->BB, Info->NumPreds, Updater);
349 Info->AvailableVal = PHI;
350 (*AvailableVals)[Info->BB] = PHI;
367 // Check if this block contains a newly added PHI.
368 PhiT *PHI = Traits::ValueIsNewPHI(Info->AvailableVal, Updater);
369 if (!PHI)
379 Traits::AddPHIOperand(PHI, PredInfo->AvailableVal, Pred);
382 DEBUG(dbgs() << " Inserted PHI: " << *PHI << "\n");
385 if (InsertedPHIs) InsertedPHIs->push_back(PHI);
389 /// FindExistingPHI - Look through the PHI nodes in a block to see if any of
408 /// CheckIfPHIMatches - Check if a PHI node matches the placement and values
410 bool CheckIfPHIMatches(PhiT *PHI) {
412 WorkList.push_back(PHI);
414 // Mark that the block containing this PHI has been visited.
415 BBMap[PHI->getParent()]->PHITag = PHI;
418 PHI = WorkList.pop_back_val();
420 // Iterate through the PHI's incoming values.
421 for (typename Traits::PHI_iterator I = Traits::PHI_begin(PHI),
422 E = Traits::PHI_end(PHI); I != E; ++I) {
436 // Check if the value is a PHI in the correct block.
441 // If this block has already been visited, check if this PHI matches.
455 /// RecordMatchingPHIs - For each PHI node that matches, record it in both
460 if (PhiT *PHI = (*I)->PHITag) {
461 BlkT *BB = PHI->getParent();
462 ValT PHIVal = Traits::GetPHIValue(PHI);