Home | History | Annotate | Download | only in Scalar

Lines Matching refs:PN

243 void IndVarSimplify::HandleFloatingPointIV(Loop *L, PHINode *PN) {
244 unsigned IncomingEdge = L->contains(PN->getIncomingBlock(0));
249 dyn_cast<ConstantFP>(PN->getIncomingValue(IncomingEdge));
255 // Check IV increment. Reject this PN if increment operation is not
258 dyn_cast<BinaryOperator>(PN->getIncomingValue(BackEdge));
265 if (IncValueVal == 0 || Incr->getOperand(0) != PN ||
269 // Check Incr uses. One user is PN and the other user is an exit condition
395 IntegerType *Int32Ty = Type::getInt32Ty(PN->getContext());
398 PHINode *NewPHI = PHINode::Create(Int32Ty, 2, PN->getName()+".int", PN);
400 PN->getIncomingBlock(IncomingEdge));
405 NewPHI->addIncoming(NewAdd, PN->getIncomingBlock(BackEdge));
411 // In the following deletions, PN may become dead and may be deleted.
413 WeakVH WeakPH = PN;
433 Value *Conv = new SIToFPInst(NewPHI, PN->getType(), "indvar.conv",
434 PN->getParent()->getFirstInsertionPt());
435 PN->replaceAllUsesWith(Conv);
436 RecursivelyDeleteTriviallyDeadInstructions(PN, TLI);
450 PHINode *PN = dyn_cast<PHINode>(I); ++I)
451 PHIs.push_back(PN);
454 if (PHINode *PN = dyn_cast_or_null<PHINode>(&*PHIs[i]))
455 HandleFloatingPointIV(L, PN);
494 PHINode *PN = dyn_cast<PHINode>(ExitBB->begin());
495 if (!PN) continue;
497 unsigned NumPreds = PN->getNumIncomingValues();
501 while ((PN = dyn_cast<PHINode>(BBI++))) {
502 if (PN->use_empty())
506 if (!PN->getType()->isIntegerTy() && !PN->getType()->isPointerTy())
514 SE->forgetValue(PN);
520 Value *InVal = PN->getIncomingValue(i);
525 if (LI->getLoopFor(PN->getIncomingBlock(i)) != L)
540 Value *ExitVal = Rewriter.expandCodeFor(ExitValue, PN->getType(), Inst);
552 PN->setIncomingValue(i, ExitVal);
561 PN->replaceAllUsesWith(ExitVal);
562 RecursivelyDeleteTriviallyDeadInstructions(PN, TLI);
568 PHINode *NewPN = cast<PHINode>(PN->clone());
569 NewPN->takeName(PN);
570 NewPN->insertBefore(PN);
571 PN->replaceAllUsesWith(NewPN);
572 PN->eraseFromParent();