Lines Matching defs:PN
75 AllocaInst *insertPHILoads(PHINode *PN, Function &F);
874 auto *PN = dyn_cast<PHINode>(&I);
876 if (!PN)
879 AllocaInst *SpillSlot = insertPHILoads(PN, F);
881 insertPHIStores(PN, SpillSlot);
883 PHINodes.push_back(PN);
887 for (auto *PN : PHINodes) {
889 PN->replaceAllUsesWith(PoisonValue::get(PN->getType()));
890 PN->eraseFromParent();
990 auto UpdatePHIOnClonedBlock = [&](PHINode *PN, bool IsForOldBlock) {
991 unsigned NumPreds = PN->getNumIncomingValues();
994 BasicBlock *IncomingBlock = PN->getIncomingBlock(PredIdx);
1009 PN->removeIncomingValue(IncomingBlock, /*DeletePHIIfEmpty=*/false);
1232 AllocaInst *WinEHPrepareImpl::insertPHILoads(PHINode *PN, Function &F) {
1233 BasicBlock *PHIBlock = PN->getParent();
1240 SpillSlot = new AllocaInst(PN->getType(), DL->getAllocaAddrSpace(), nullptr,
1241 Twine(PN->getName(), ".wineh.spillslot"),
1243 Value *V = new LoadInst(PN->getType(), SpillSlot,
1244 Twine(PN->getName(), ".wineh.reload"),
1246 PN->replaceAllUsesWith(V);
1253 for (Use &U : llvm::make_early_inc_range(PN->uses())) {
1260 replaceUseWithLoad(PN, U, SpillSlot, Loads, F);
1282 PHINode *PN = dyn_cast<PHINode>(InVal);
1283 if (PN && PN->getParent() == EHBlock) {
1287 for (unsigned i = 0, e = PN->getNumIncomingValues(); i < e; ++i) {
1288 Value *PredVal = PN->getIncomingValue(i);
1294 insertPHIStore(PN->getIncomingBlock(i), PredVal, SpillSlot, Worklist);