Home | History | Annotate | Download | only in Utils

Lines Matching defs:PN

377 bool llvm::RecursivelyDeleteDeadPHINode(PHINode *PN,
380 for (Instruction *I = PN; areAllUsesEqual(I) && !I->mayHaveSideEffects();
461 while (PHINode *PN = dyn_cast<PHINode>(PhiIt)) {
465 if (!recursivelySimplifyInstruction(PN, TD))
483 while (PHINode *PN = dyn_cast<PHINode>(DestBB->begin())) {
484 Value *NewVal = PN->getIncomingValue(0);
486 if (NewVal == PN) NewVal = UndefValue::get(PN->getType());
487 PN->replaceAllUsesWith(NewVal);
488 PN->eraseFromParent();
552 PHINode *PN = cast<PHINode>(I);
555 // BB which has the same incoming value for *PI as PN does, we can
557 PHINode *BBPN = dyn_cast<PHINode>(PN->getIncomingValueForBlock(BB));
559 for (unsigned PI = 0, PE = PN->getNumIncomingValues(); PI != PE; ++PI) {
560 BasicBlock *IBB = PN->getIncomingBlock(PI);
563 PN->getIncomingValue(PI))) {
564 DEBUG(dbgs() << "Can't fold, phi node " << PN->getName() << " in "
572 Value* Val = PN->getIncomingValueForBlock(BB);
573 for (unsigned PI = 0, PE = PN->getNumIncomingValues(); PI != PE; ++PI) {
577 BasicBlock *IBB = PN->getIncomingBlock(PI);
579 !CanMergeValues(Val, PN->getIncomingValue(PI))) {
580 DEBUG(dbgs() << "Can't fold, phi node " << PN->getName() << " in "
628 /// into \p PN.
630 /// \param PN The phi we are collecting the map for.
632 static void gatherIncomingValuesToPhi(PHINode *PN,
634 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
635 BasicBlock *BB = PN->getIncomingBlock(i);
636 Value *V = PN->getIncomingValue(i);
646 /// \param PN The phi we are replacing the undefs in.
648 static void replaceUndefValuesInPhi(PHINode *PN,
650 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
651 Value *V = PN->getIncomingValue(i);
655 BasicBlock *BB = PN->getIncomingBlock(i);
659 PN->setIncomingValue(i, It->second);
669 /// \param PN The phi that we are updating.
672 PHINode *PN) {
673 Value *OldVal = PN->removeIncomingValue(BB, false);
678 // We are merging two blocks - BB, and the block containing PN - and
680 // to go to the block containing PN, and update PN
684 // values flowing into PN, we want to rewrite those values to be
687 gatherIncomingValuesToPhi(PN, IncomingValues);
706 PN->addIncoming(Selected, PredBB);
710 // Update existing incoming values in PN for this
718 PN->addIncoming(Selected, PredBB);
722 replaceUndefValuesInPhi(PN, IncomingValues);
758 if (PHINode* PN = dyn_cast<PHINode>(U.getUser())) {
759 if (PN->getIncomingBlock(U) != BB)
779 PHINode *PN = cast<PHINode>(I);
781 redirectValuesFromPredecessorsToPhi(BB, BBPreds, PN);
793 while (PHINode *PN = dyn_cast<PHINode>(&BB->front())) {
795 assert(PN->use_empty() && "There shouldn't be any uses here!");
796 PN->eraseFromParent();
829 PHINode *PN = dyn_cast<PHINode>(I++); ) {
836 for (User::op_iterator I = PN->op_begin(), E = PN
840 for (PHINode::block_iterator I = PN->block_begin(), E = PN->block_end();
849 HashMap.insert(std::make_pair(Hash, PN));
853 if (OtherPN->isIdenticalTo(PN)) {
855 PN->replaceAllUsesWith(OtherPN);
856 PN->eraseFromParent();
865 Pair.first->second = PN;
866 CollisionMap[PN] = Old;