Lines Matching defs:PN

241 void IndVarSimplify::HandleFloatingPointIV(Loop *L, PHINode *PN) {
242 unsigned IncomingEdge = L->contains(PN->getIncomingBlock(0));
247 dyn_cast<ConstantFP>(PN->getIncomingValue(IncomingEdge));
253 // Check IV increment. Reject this PN if increment operation is not
256 dyn_cast<BinaryOperator>(PN->getIncomingValue(BackEdge));
263 if (IncValueVal == 0 || Incr->getOperand(0) != PN ||
267 // Check Incr uses. One user is PN and the other user is an exit condition
393 IntegerType *Int32Ty = Type::getInt32Ty(PN->getContext());
396 PHINode *NewPHI = PHINode::Create(Int32Ty, 2, PN->getName()+".int", PN);
398 PN->getIncomingBlock(IncomingEdge));
403 NewPHI->addIncoming(NewAdd, PN->getIncomingBlock(BackEdge));
409 // In the following deletions, PN may become dead and may be deleted.
411 WeakVH WeakPH = PN;
431 Value *Conv = new SIToFPInst(NewPHI, PN->getType(), "indvar.conv",
432 PN->getParent()->getFirstInsertionPt());
433 PN->replaceAllUsesWith(Conv);
434 RecursivelyDeleteTriviallyDeadInstructions(PN, TLI);
448 PHINode *PN = dyn_cast<PHINode>(I); ++I)
449 PHIs.push_back(PN);
452 if (PHINode *PN = dyn_cast_or_null<PHINode>(&*PHIs[i]))
453 HandleFloatingPointIV(L, PN);
492 PHINode *PN = dyn_cast<PHINode>(ExitBB->begin());
493 if (!PN) continue;
495 unsigned NumPreds = PN->getNumIncomingValues();
499 while ((PN = dyn_cast<PHINode>(BBI++))) {
500 if (PN->use_empty())
504 if (!PN->getType()->isIntegerTy() && !PN->getType()->isPointerTy())
512 SE->forgetValue(PN);
518 Value *InVal = PN->getIncomingValue(i);
523 if (LI->getLoopFor(PN->getIncomingBlock(i)) != L)
578 Value *ExitVal = Rewriter.expandCodeFor(ExitValue, PN->getType(), Inst);
590 PN->setIncomingValue(i, ExitVal);
601 PN->replaceAllUsesWith(ExitVal);
602 PN->eraseFromParent();
608 PHINode *NewPN = cast<PHINode>(PN->clone());
609 NewPN->takeName(PN);
610 NewPN->insertBefore(PN);
611 PN->replaceAllUsesWith(NewPN);
612 PN->eraseFromParent();