| /openbsd/src/gnu/llvm/llvm/lib/Transforms/InstCombine/ |
| D | InstCombinePHI.cpp | 43 void InstCombinerImpl::PHIArgMergedDebugLoc(Instruction *Inst, PHINode &PN) { in PHIArgMergedDebugLoc() argument 44 auto *FirstInst = cast<Instruction>(PN.getIncomingValue(0)); in PHIArgMergedDebugLoc() 50 for (Value *V : drop_begin(PN.incoming_values())) { in PHIArgMergedDebugLoc() 106 bool InstCombinerImpl::foldIntegerTypedPHI(PHINode &PN) { in foldIntegerTypedPHI() argument 107 if (!PN.getType()->isIntegerTy()) in foldIntegerTypedPHI() 109 if (!PN.hasOneUse()) in foldIntegerTypedPHI() 112 auto *IntToPtr = dyn_cast<IntToPtrInst>(PN.user_back()); in foldIntegerTypedPHI() 142 for (auto Incoming : zip(PN.blocks(), PN.incoming_values())) { in foldIntegerTypedPHI() 190 auto *BB = PN.getParent(); in foldIntegerTypedPHI() 191 assert(AvailablePtrVals.size() == PN.getNumIncomingValues() && in foldIntegerTypedPHI() [all …]
|
| /openbsd/src/gnu/llvm/llvm/lib/Transforms/Utils/ |
| D | LoopSimplify.cpp | 177 PHINode *PN = cast<PHINode>(I); in findPHIToPartitionLoops() local 179 if (Value *V = simplifyInstruction(PN, {DL, nullptr, DT, AC})) { in findPHIToPartitionLoops() 181 PN->replaceAllUsesWith(V); in findPHIToPartitionLoops() 182 PN->eraseFromParent(); in findPHIToPartitionLoops() 187 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in findPHIToPartitionLoops() 188 if (PN->getIncomingValue(i) == PN && in findPHIToPartitionLoops() 189 L->contains(PN->getIncomingBlock(i))) in findPHIToPartitionLoops() 191 return PN; in findPHIToPartitionLoops() 248 PHINode *PN = findPHIToPartitionLoops(L, DT, AC); in separateNestedLoop() local 249 if (!PN) return nullptr; // No known way to partition. in separateNestedLoop() [all …]
|
| D | LCSSA.cpp | 123 if (auto *PN = dyn_cast<PHINode>(User)) in formLCSSAForInstructions() local 124 UserBB = PN->getIncomingBlock(U); in formLCSSAForInstructions() 168 PHINode *PN = Builder.CreatePHI(I->getType(), PredCache.size(ExitBB), in formLCSSAForInstructions() local 171 PN->setDebugLoc(I->getDebugLoc()); in formLCSSAForInstructions() 179 PN->addIncoming(I, Pred); in formLCSSAForInstructions() 186 &PN->getOperandUse(PN->getOperandNumForIncomingValue( in formLCSSAForInstructions() 187 PN->getNumIncomingValues() - 1))); in formLCSSAForInstructions() 190 AddedPHIs.push_back(PN); in formLCSSAForInstructions() 193 SSAUpdate.AddAvailableValue(ExitBB, PN); in formLCSSAForInstructions() 205 PostProcessPHIs.push_back(PN); in formLCSSAForInstructions() [all …]
|
| D | LoopUnrollRuntime.cpp | 100 for (PHINode &PN : Succ->phis()) { in ConnectProlog() 108 PHINode *NewPN = PHINode::Create(PN.getType(), 2, PN.getName() + ".unr", in ConnectProlog() 112 if (L->contains(&PN)) { in ConnectProlog() 114 NewPN->addIncoming(PN.getIncomingValueForBlock(NewPreHeader), in ConnectProlog() 118 NewPN->addIncoming(UndefValue::get(PN.getType()), PreHeader); in ConnectProlog() 121 Value *V = PN.getIncomingValueForBlock(Latch); in ConnectProlog() 134 if (L->contains(&PN)) in ConnectProlog() 135 PN.setIncomingValueForBlock(NewPreHeader, NewPN); in ConnectProlog() 137 PN.addIncoming(NewPN, PrologExit); in ConnectProlog() 138 SE.forgetValue(&PN); in ConnectProlog() [all …]
|
| D | UnifyFunctionExitNodes.cpp | 86 PHINode *PN = nullptr; in unifyReturnBlocks() local 91 PN = PHINode::Create(F.getReturnType(), ReturningBlocks.size(), in unifyReturnBlocks() 93 PN->insertInto(NewRetBlock, NewRetBlock->end()); in unifyReturnBlocks() 94 ReturnInst::Create(F.getContext(), PN, NewRetBlock); in unifyReturnBlocks() 102 if (PN) in unifyReturnBlocks() 103 PN->addIncoming(BB->getTerminator()->getOperand(0), BB); in unifyReturnBlocks()
|
| D | BasicBlockUtils.cpp | 149 while (PHINode *PN = dyn_cast<PHINode>(BB->begin())) { in FoldSingleEntryPHINodes() local 150 if (PN->getIncomingValue(0) != PN) in FoldSingleEntryPHINodes() 151 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in FoldSingleEntryPHINodes() 153 PN->replaceAllUsesWith(PoisonValue::get(PN->getType())); in FoldSingleEntryPHINodes() 156 MemDep->removeInstruction(PN); // Memdep updates AA itself. in FoldSingleEntryPHINodes() 158 PN->eraseFromParent(); in FoldSingleEntryPHINodes() 168 for (PHINode &PN : BB->phis()) in DeleteDeadPHIs() 169 PHIs.push_back(&PN); in DeleteDeadPHIs() 173 if (PHINode *PN = dyn_cast_or_null<PHINode>(PHIs[i].operator Value*())) in DeleteDeadPHIs() local 174 Changed |= RecursivelyDeleteDeadPHINode(PN, TLI, MSSAU); in DeleteDeadPHIs() [all …]
|
| D | LoopVersioning.cpp | 132 PHINode *PN; in addPHINodes() local 139 for (auto I = PHIBlock->begin(); (PN = dyn_cast<PHINode>(I)); ++I) { in addPHINodes() 140 if (PN->getIncomingValue(0) == Inst) { in addPHINodes() 141 SE->forgetValue(PN); in addPHINodes() 146 if (!PN) { in addPHINodes() 147 PN = PHINode::Create(Inst->getType(), 2, Inst->getName() + ".lver", in addPHINodes() 154 U->replaceUsesOfWith(Inst, PN); in addPHINodes() 155 PN->addIncoming(Inst, VersionedLoop->getExitingBlock()); in addPHINodes() 160 for (auto I = PHIBlock->begin(); (PN = dyn_cast<PHINode>(I)); ++I) { in addPHINodes() 161 assert(PN->getNumOperands() == 1 && in addPHINodes() [all …]
|
| D | SSAUpdaterBulk.cpp | 154 PHINode *PN = B.CreatePHI(R.Ty, 0, R.Name); in RewriteAllUses() local 155 R.Defines[FrontierBB] = PN; in RewriteAllUses() 156 InsertedPHIsForVar.push_back(PN); in RewriteAllUses() 158 InsertedPHIs->push_back(PN); in RewriteAllUses() 162 for (auto *PN : InsertedPHIsForVar) { in RewriteAllUses() local 163 BasicBlock *PBB = PN->getParent(); in RewriteAllUses() 165 PN->addIncoming(computeValueAt(Pred, R, DT), Pred); in RewriteAllUses()
|
| D | CloneFunction.cpp | 691 for (const PHINode &PN : BI.phis()) { in CloneAndPruneIntoFromInst() local 694 if (isa<PHINode>(VMap[&PN])) in CloneAndPruneIntoFromInst() 695 PHIToResolve.push_back(&PN); in CloneAndPruneIntoFromInst() 721 PHINode *PN = cast<PHINode>(VMap[OPN]); in CloneAndPruneIntoFromInst() local 723 Value *V = VMap.lookup(PN->getIncomingBlock(pred)); in CloneAndPruneIntoFromInst() 726 MapValue(PN->getIncomingValue(pred), VMap, in CloneAndPruneIntoFromInst() 729 PN->setIncomingValue(pred, InVal); in CloneAndPruneIntoFromInst() 730 PN->setIncomingBlock(pred, MappedBlock); in CloneAndPruneIntoFromInst() 732 PN->removeIncomingValue(pred, false); in CloneAndPruneIntoFromInst() 744 PHINode *PN = cast<PHINode>(NewBB->begin()); in CloneAndPruneIntoFromInst() local [all …]
|
| D | DemoteRegToStack.cpp | 58 if (PHINode *PN = dyn_cast<PHINode>(U)) { in DemoteRegToStack() local 69 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in DemoteRegToStack() 70 if (PN->getIncomingValue(i) == &I) { in DemoteRegToStack() 71 Value *&V = Loads[PN->getIncomingBlock(i)]; in DemoteRegToStack() 76 PN->getIncomingBlock(i)->getTerminator()); in DemoteRegToStack() 78 PN->setIncomingValue(i, V); in DemoteRegToStack()
|
| /openbsd/src/gnu/llvm/llvm/lib/Transforms/Scalar/ |
| D | LoopBoundSplit.cpp | 74 PHINode *PN = cast<PHINode>(Cond.AddRecValue); in analyzeICmp() local 75 Cond.NonPHIAddRecValue = PN->getIncomingValueForBlock(L.getLoopLatch()); in analyzeICmp() 365 for (PHINode &PN : L.getHeader()->phis()) { in splitLoopBound() 368 Builder.CreatePHI(PN.getType(), 1, PN.getName() + ".lcssa"); in splitLoopBound() 369 LCSSAPhi->setDebugLoc(PN.getDebugLoc()); in splitLoopBound() 373 isExitingLatch ? PN.getIncomingValueForBlock(L.getLoopLatch()) : &PN, in splitLoopBound() 377 PHINode *PostLoopPN = cast<PHINode>(VMap[&PN]); in splitLoopBound() 383 if (!SE.isSCEVable(PN.getType())) in splitLoopBound() 386 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in splitLoopBound() 388 PN.getIncomingValueForBlock(L.getLoopLatch())) in splitLoopBound() [all …]
|
| D | GVNSink.cpp | 232 ModelledPHI(const PHINode *PN) { in ModelledPHI() argument 235 for (unsigned I = 0, E = PN->getNumIncomingValues(); I != E; ++I) in ModelledPHI() 236 Ops.push_back({PN->getIncomingBlock(I), PN->getIncomingValue(I)}); in ModelledPHI() 608 for (PHINode &PN : BB->phis()) { in analyzeInitialPHIs() 609 auto MPHI = ModelledPHI(&PN); in analyzeInitialPHIs() 627 while (PHINode *PN = dyn_cast<PHINode>(I++)) { in foldPointlessPHINodes() local 628 if (!llvm::all_of(PN->incoming_values(), [&](const Value *V) { in foldPointlessPHINodes() 629 return V == PN->getIncomingValue(0); in foldPointlessPHINodes() 632 if (PN->getIncomingValue(0) != PN) in foldPointlessPHINodes() 633 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in foldPointlessPHINodes() [all …]
|
| D | CallSiteSplitting.cpp | 338 for (PHINode &PN : TailBB->phis()) { in splitCallSite() 341 if (&*CI == &PN) { in splitCallSite() 342 NewCI->setArgOperand(ArgNo, PN.getIncomingValueForBlock(SplitBlock)); in splitCallSite() 421 for (auto &PN : Parent->phis()) { in isPredicatedOnPHI() local 423 if (&*Arg != &PN) in isPredicatedOnPHI() 425 assert(PN.getNumIncomingValues() == 2 && in isPredicatedOnPHI() 427 if (PN.getIncomingBlock(0) == PN.getIncomingBlock(1)) in isPredicatedOnPHI() 429 if (PN.getIncomingValue(0) == PN.getIncomingValue(1)) in isPredicatedOnPHI() 431 if (isa<Constant>(PN.getIncomingValue(0)) && in isPredicatedOnPHI() 432 isa<Constant>(PN.getIncomingValue(1))) in isPredicatedOnPHI()
|
| D | JumpThreading.cpp | 218 static void updatePredecessorProfileMetadata(PHINode *PN, BasicBlock *BB) { in updatePredecessorProfileMetadata() argument 260 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { in updatePredecessorProfileMetadata() 261 Value *PhiOpnd = PN->getIncomingValue(i); in updatePredecessorProfileMetadata() 273 auto PredOutEdge = GetPredOutEdge(PN->getIncomingBlock(i), BB); in updatePredecessorProfileMetadata() 703 if (PHINode *PN = dyn_cast<PHINode>(I)) { in computeValueKnownInPredecessorsImpl() local 704 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { in computeValueKnownInPredecessorsImpl() 705 Value *InVal = PN->getIncomingValue(i); in computeValueKnownInPredecessorsImpl() 707 Result.emplace_back(KC, PN->getIncomingBlock(i)); in computeValueKnownInPredecessorsImpl() 710 PN->getIncomingBlock(i), in computeValueKnownInPredecessorsImpl() 713 Result.emplace_back(KC, PN->getIncomingBlock(i)); in computeValueKnownInPredecessorsImpl() [all …]
|
| /openbsd/src/gnu/llvm/llvm/lib/Analysis/ |
| D | PhiValues.cpp | 125 const PhiValues::ValueSet &PhiValues::getValuesForPhi(const PHINode *PN) { in getValuesForPhi() argument 126 unsigned int DepthNumber = DepthMap.lookup(PN); in getValuesForPhi() 129 processPhi(PN, Stack); in getValuesForPhi() 130 DepthNumber = DepthMap.lookup(PN); in getValuesForPhi() 146 if (const PHINode *PN = dyn_cast<PHINode>(V)) in invalidateValue() local 147 DepthMap.erase(PN); in invalidateValue() 167 for (const PHINode &PN : BB.phis()) { in print() local 169 PN.printAsOperand(OS, false); in print() 171 unsigned int N = DepthMap.lookup(&PN); in print() 200 for (const PHINode &PN : BB.phis()) in run() local [all …]
|
| /openbsd/src/gnu/llvm/llvm/lib/Target/Hexagon/ |
| D | HexagonVectorLoopCarriedReuse.cpp | 381 PHINode *PN = cast<PHINode>(D->front()); in findValueToReuse() local 384 BasicBlock *BB = PN->getParent(); in findValueToReuse() 385 LLVM_DEBUG(dbgs() << "Checking if any uses of " << *PN in findValueToReuse() 389 for (Use &U : PN->uses()) { in findValueToReuse() 514 PHINode *PN = dyn_cast<PHINode>(Op); in findValueInBlock() local 515 assert(PN); in findValueInBlock() 516 Value *ValueInBlock = PN->getIncomingValueForBlock(BB); in findValueInBlock() 603 PHINode *PN = dyn_cast<PHINode>(I); in findDepChainFromPHI() local 604 if (!PN) { in findDepChainFromPHI() 608 auto NumIncomingValues = PN->getNumIncomingValues(); in findDepChainFromPHI() [all …]
|
| /openbsd/src/gnu/llvm/llvm/lib/IR/ |
| D | SafepointIRVerifier.cpp | 83 bool hasLiveIncomingEdge(const PHINode *PN, const BasicBlock *InBB) const { in hasLiveIncomingEdge() argument 85 const BasicBlock* BB = PN->getParent(); in hasLiveIncomingEdge() 350 if (const auto *PN = dyn_cast<PHINode>(V)) { in getBaseType() local 351 append_range(Worklist, PN->incoming_values()); in getBaseType() 469 bool hasLiveIncomingEdge(const PHINode *PN, const BasicBlock *InBB) const { in hasLiveIncomingEdge() argument 470 return CD.hasLiveIncomingEdge(PN, InBB); in hasLiveIncomingEdge() 667 if (const PHINode *PN = dyn_cast<PHINode>(&I)) { in removeValidUnrelocatedDefs() local 668 if (containsGCPtrType(PN->getType())) { in removeValidUnrelocatedDefs() 672 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { in removeValidUnrelocatedDefs() 673 const BasicBlock *InBB = PN->getIncomingBlock(i); in removeValidUnrelocatedDefs() [all …]
|
| D | Dominators.cpp | 124 if (auto *PN = dyn_cast<PHINode>(UserInst)) in dominates() local 127 return dominates(BB, PN->getIncomingBlock(U)); in dominates() 260 PHINode *PN = dyn_cast<PHINode>(UserInst); in dominates() local 261 if (PN && PN->getParent() == BBE.getEnd() && in dominates() 262 PN->getIncomingBlock(U) == BBE.getStart()) in dominates() 268 if (PN) in dominates() 269 UseBB = PN->getIncomingBlock(U); in dominates() 290 if (PHINode *PN = dyn_cast<PHINode>(UserInst)) in dominates() local 291 UseBB = PN->getIncomingBlock(U); in dominates() 343 if (PHINode *PN = dyn_cast<PHINode>(I)) in isReachableFromEntry() local [all …]
|
| /openbsd/src/gnu/llvm/llvm/lib/Transforms/ObjCARC/ |
| D | ObjCARC.h | 74 void getEquivalentPHIs(PHINodeTy &PN, VectorTy &PHIList) { in getEquivalentPHIs() argument 75 auto *BB = PN.getParent(); in getEquivalentPHIs() 77 if (&P == &PN) // Do not add PN to the list. in getEquivalentPHIs() 79 unsigned I = 0, E = PN.getNumIncomingValues(); in getEquivalentPHIs() 81 auto *BB = PN.getIncomingBlock(I); in getEquivalentPHIs() 82 auto *PNOpnd = PN.getIncomingValue(I)->stripPointerCasts(); in getEquivalentPHIs()
|
| /openbsd/src/gnu/llvm/llvm/lib/CodeGen/ |
| D | WinEHPrepare.cpp | 81 AllocaInst *insertPHILoads(PHINode *PN, Function &F); 721 auto *PN = dyn_cast<PHINode>(&I); in demotePHIsOnFunclets() local 723 if (!PN) in demotePHIsOnFunclets() 726 AllocaInst *SpillSlot = insertPHILoads(PN, F); in demotePHIsOnFunclets() 728 insertPHIStores(PN, SpillSlot); in demotePHIsOnFunclets() 730 PHINodes.push_back(PN); in demotePHIsOnFunclets() 734 for (auto *PN : PHINodes) { in demotePHIsOnFunclets() local 736 PN->replaceAllUsesWith(PoisonValue::get(PN->getType())); in demotePHIsOnFunclets() 737 PN->eraseFromParent(); in demotePHIsOnFunclets() 837 auto UpdatePHIOnClonedBlock = [&](PHINode *PN, bool IsForOldBlock) { in cloneCommonBlocks() argument [all …]
|
| /openbsd/src/gnu/llvm/llvm/include/llvm/IR/ |
| D | BasicBlock.h | 338 PHINodeT *PN; variable 340 phi_iterator_impl(PHINodeT *PN) : PN(PN) {} in phi_iterator_impl() argument 352 : PN(Arg.PN) {} in phi_iterator_impl() 354 bool operator==(const phi_iterator_impl &Arg) const { return PN == Arg.PN; } 356 PHINodeT &operator*() const { return *PN; } 360 assert(PN && "Cannot increment the end iterator!"); 361 PN = dyn_cast<PHINodeT>(std::next(BBIteratorT(PN)));
|
| /openbsd/src/gnu/llvm/llvm/lib/Target/BPF/ |
| D | BPFCheckAndAdjustIR.cpp | 80 PHINode *PN = dyn_cast<PHINode>(&I); in checkIR() local 81 if (!PN || PN->use_empty()) in checkIR() 83 for (int i = 0, e = PN->getNumIncomingValues(); i < e; ++i) { in checkIR() 84 auto *GV = dyn_cast<GlobalVariable>(PN->getIncomingValue(i)); in checkIR()
|
| /openbsd/src/gnu/llvm/llvm/include/llvm/Analysis/ |
| D | SparsePropagation.h | 78 virtual bool IsSpecialCasedPHI(PHINode *PN) { return false; } in IsSpecialCasedPHI() argument 399 void SparseSolver<LatticeKey, LatticeVal, KeyInfo>::visitPHINode(PHINode &PN) { in visitPHINode() argument 403 if (LatticeFunc->IsSpecialCasedPHI(&PN)) { in visitPHINode() 405 LatticeFunc->ComputeInstructionState(PN, ChangedValues, *this); in visitPHINode() 413 LatticeKey Key = KeyInfo::getLatticeKeyFromValue(&PN); in visitPHINode() 423 if (PN.getNumIncomingValues() > 64) { in visitPHINode() 431 for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) { in visitPHINode() 433 if (!isEdgeFeasible(PN.getIncomingBlock(i), PN.getParent(), true)) in visitPHINode() 438 getValueState(KeyInfo::getLatticeKeyFromValue(PN.getIncomingValue(i))); in visitPHINode() 454 if (PHINode *PN = dyn_cast<PHINode>(&I)) in visitInst() local [all …]
|
| /openbsd/src/gnu/llvm/llvm/lib/CodeGen/SelectionDAG/ |
| D | FunctionLoweringInfo.cpp | 277 for (const PHINode &PN : BB.phis()) { in set() local 278 if (PN.use_empty()) in set() 282 if (PN.getType()->isEmptyTy()) in set() 285 DebugLoc DL = PN.getDebugLoc(); in set() 286 unsigned PHIReg = ValueMap[&PN]; in set() 290 ComputeValueVTs(*TLI, MF->getDataLayout(), PN.getType(), ValueVTs); in set() 425 void FunctionLoweringInfo::ComputePHILiveOutRegInfo(const PHINode *PN) { in ComputePHILiveOutRegInfo() argument 426 Type *Ty = PN->getType(); in ComputePHILiveOutRegInfo() 436 if (TLI->getNumRegisters(PN->getContext(), IntVT) != 1) in ComputePHILiveOutRegInfo() 438 IntVT = TLI->getTypeToTransformTo(PN->getContext(), IntVT); in ComputePHILiveOutRegInfo() [all …]
|
| /openbsd/src/gnu/llvm/llvm/examples/IRTransforms/ |
| D | SimplifyCFG.cpp | 282 for (PHINode &PN : make_early_inc_range(BB.phis())) { in mergeIntoSinglePredecessor_v1() 283 PN.replaceAllUsesWith(PN.getIncomingValue(0)); in mergeIntoSinglePredecessor_v1() 284 PN.eraseFromParent(); in mergeIntoSinglePredecessor_v1() 333 for (PHINode &PN : make_early_inc_range(BB.phis())) { in mergeIntoSinglePredecessor_v2() 334 PN.replaceAllUsesWith(PN.getIncomingValue(0)); in mergeIntoSinglePredecessor_v2() 335 PN.eraseFromParent(); in mergeIntoSinglePredecessor_v2()
|