Home
last modified time | relevance | path

Searched refs:PN (Results 1 – 25 of 699) sorted by relevance

12345678910>>...28

/external/swiftshader/third_party/llvm-7.0/llvm/lib/Transforms/InstCombine/
DInstCombinePHI.cpp33 void InstCombiner::PHIArgMergedDebugLoc(Instruction *Inst, PHINode &PN) { in PHIArgMergedDebugLoc() argument
34 auto *FirstInst = cast<Instruction>(PN.getIncomingValue(0)); in PHIArgMergedDebugLoc()
40 for (unsigned i = 1; i != PN.getNumIncomingValues(); ++i) { in PHIArgMergedDebugLoc()
41 auto *I = cast<Instruction>(PN.getIncomingValue(i)); in PHIArgMergedDebugLoc()
96 Instruction *InstCombiner::FoldIntegerTypedPHI(PHINode &PN) { in FoldIntegerTypedPHI() argument
97 if (!PN.getType()->isIntegerTy()) in FoldIntegerTypedPHI()
99 if (!PN.hasOneUse()) in FoldIntegerTypedPHI()
102 auto *IntToPtr = dyn_cast<IntToPtrInst>(PN.user_back()); in FoldIntegerTypedPHI()
132 for (unsigned i = 0; i != PN.getNumIncomingValues(); ++i) { in FoldIntegerTypedPHI()
133 Value *Arg = PN.getIncomingValue(i); in FoldIntegerTypedPHI()
[all …]
/external/llvm/lib/Transforms/InstCombine/
DInstCombinePHI.cpp28 Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) { in FoldPHIArgBinOpIntoPHI() argument
29 Instruction *FirstInst = cast<Instruction>(PN.getIncomingValue(0)); in FoldPHIArgBinOpIntoPHI()
39 for (unsigned i = 1; i != PN.getNumIncomingValues(); ++i) { in FoldPHIArgBinOpIntoPHI()
40 Instruction *I = dyn_cast<Instruction>(PN.getIncomingValue(i)); in FoldPHIArgBinOpIntoPHI()
71 NewLHS = PHINode::Create(LHSType, PN.getNumIncomingValues(), in FoldPHIArgBinOpIntoPHI()
73 NewLHS->addIncoming(InLHS, PN.getIncomingBlock(0)); in FoldPHIArgBinOpIntoPHI()
74 InsertNewInstBefore(NewLHS, PN); in FoldPHIArgBinOpIntoPHI()
79 NewRHS = PHINode::Create(RHSType, PN.getNumIncomingValues(), in FoldPHIArgBinOpIntoPHI()
81 NewRHS->addIncoming(InRHS, PN.getIncomingBlock(0)); in FoldPHIArgBinOpIntoPHI()
82 InsertNewInstBefore(NewRHS, PN); in FoldPHIArgBinOpIntoPHI()
[all …]
/external/deqp/external/vulkancts/modules/vulkan/api/
DvktApiFeatureInfo.cpp657 #ifdef PN
658 #error PN defined
660 #define PN(_X_) &(_X_), (const char*)(#_X_) macro
718 { PN(checkAlways), PN(limits.maxImageDimension1D), LIM_MIN_UINT32(4096) }, in validateLimits12()
719 { PN(checkAlways), PN(limits.maxImageDimension2D), LIM_MIN_UINT32(4096) }, in validateLimits12()
720 { PN(checkAlways), PN(limits.maxImageDimension3D), LIM_MIN_UINT32(256) }, in validateLimits12()
721 { PN(checkAlways), PN(limits.maxImageDimensionCube), LIM_MIN_UINT32(4096) }, in validateLimits12()
722 { PN(checkAlways), PN(limits.maxImageArrayLayers), LIM_MIN_UINT32(256) }, in validateLimits12()
723 …{ PN(checkAlways), PN(limits.maxTexelBufferElements), LIM_MIN_UINT32(65536) … in validateLimits12()
724 …{ PN(checkAlways), PN(limits.maxUniformBufferRange), LIM_MIN_UINT32(16384) }, in validateLimits12()
[all …]
/external/llvm/lib/IR/
DBasicBlock.cpp315 while (PHINode *PN = dyn_cast<PHINode>(&front())) { in removePredecessor() local
317 PN->removeIncomingValue(Pred, !DontDeleteUselessPHIs); in removePredecessor()
321 if (PN->getIncomingValue(0) != PN) in removePredecessor()
322 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in removePredecessor()
325 PN->replaceAllUsesWith(UndefValue::get(PN->getType())); in removePredecessor()
335 PHINode *PN; in removePredecessor() local
336 for (iterator II = begin(); (PN = dyn_cast<PHINode>(II)); ) { in removePredecessor()
338 PN->removeIncomingValue(Pred, false); in removePredecessor()
342 if (!DontDeleteUselessPHIs && (PNV = PN->hasConstantValue())) in removePredecessor()
343 if (PNV != PN) { in removePredecessor()
[all …]
/external/swiftshader/third_party/llvm-7.0/llvm/lib/Transforms/Utils/
DBasicBlockUtils.cpp90 while (PHINode *PN = dyn_cast<PHINode>(BB->begin())) { in FoldSingleEntryPHINodes() local
91 if (PN->getIncomingValue(0) != PN) in FoldSingleEntryPHINodes()
92 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in FoldSingleEntryPHINodes()
94 PN->replaceAllUsesWith(UndefValue::get(PN->getType())); in FoldSingleEntryPHINodes()
97 MemDep->removeInstruction(PN); // Memdep updates AA itself. in FoldSingleEntryPHINodes()
99 PN->eraseFromParent(); in FoldSingleEntryPHINodes()
107 for (PHINode &PN : BB->phis()) in DeleteDeadPHIs()
108 PHIs.push_back(&PN); in DeleteDeadPHIs()
112 if (PHINode *PN = dyn_cast_or_null<PHINode>(PHIs[i].operator Value*())) in DeleteDeadPHIs() local
113 Changed |= RecursivelyDeleteDeadPHINode(PN, TLI); in DeleteDeadPHIs()
[all …]
DLoopSimplify.cpp179 PHINode *PN = cast<PHINode>(I); in findPHIToPartitionLoops() local
181 if (Value *V = SimplifyInstruction(PN, {DL, nullptr, DT, AC})) { in findPHIToPartitionLoops()
183 PN->replaceAllUsesWith(V); in findPHIToPartitionLoops()
184 PN->eraseFromParent(); in findPHIToPartitionLoops()
189 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in findPHIToPartitionLoops()
190 if (PN->getIncomingValue(i) == PN && in findPHIToPartitionLoops()
191 L->contains(PN->getIncomingBlock(i))) in findPHIToPartitionLoops()
193 return PN; in findPHIToPartitionLoops()
229 PHINode *PN = findPHIToPartitionLoops(L, DT, AC); in separateNestedLoop() local
230 if (!PN) return nullptr; // No known way to partition. in separateNestedLoop()
[all …]
DLCSSA.cpp106 if (auto *PN = dyn_cast<PHINode>(User)) in formLCSSAForInstructions() local
107 UserBB = PN->getIncomingBlock(U); in formLCSSAForInstructions()
146 PHINode *PN = PHINode::Create(I->getType(), PredCache.size(ExitBB), in formLCSSAForInstructions() local
149 PN->setDebugLoc(I->getDebugLoc()); in formLCSSAForInstructions()
152 PN->addIncoming(I, Pred); in formLCSSAForInstructions()
159 &PN->getOperandUse(PN->getOperandNumForIncomingValue( in formLCSSAForInstructions()
160 PN->getNumIncomingValues() - 1))); in formLCSSAForInstructions()
163 AddedPHIs.push_back(PN); in formLCSSAForInstructions()
166 SSAUpdate.AddAvailableValue(ExitBB, PN); in formLCSSAForInstructions()
178 PostProcessPHIs.push_back(PN); in formLCSSAForInstructions()
[all …]
DUnifyFunctionExitNodes.cpp90 PHINode *PN = nullptr; in runOnFunction() local
95 PN = PHINode::Create(F.getReturnType(), ReturningBlocks.size(), in runOnFunction()
97 NewRetBlock->getInstList().push_back(PN); in runOnFunction()
98 ReturnInst::Create(F.getContext(), PN, NewRetBlock); in runOnFunction()
107 if (PN) in runOnFunction()
108 PN->addIncoming(BB->getTerminator()->getOperand(0), BB); in runOnFunction()
DCloneFunction.cpp488 for (const PHINode &PN : BI.phis()) { in CloneAndPruneIntoFromInst() local
491 if (isa<PHINode>(VMap[&PN])) in CloneAndPruneIntoFromInst()
492 PHIToResolve.push_back(&PN); in CloneAndPruneIntoFromInst()
517 PHINode *PN = cast<PHINode>(VMap[OPN]); in CloneAndPruneIntoFromInst() local
519 Value *V = VMap.lookup(PN->getIncomingBlock(pred)); in CloneAndPruneIntoFromInst()
521 Value *InVal = MapValue(PN->getIncomingValue(pred), in CloneAndPruneIntoFromInst()
525 PN->setIncomingValue(pred, InVal); in CloneAndPruneIntoFromInst()
526 PN->setIncomingBlock(pred, MappedBlock); in CloneAndPruneIntoFromInst()
528 PN->removeIncomingValue(pred, false); in CloneAndPruneIntoFromInst()
540 PHINode *PN = cast<PHINode>(NewBB->begin()); in CloneAndPruneIntoFromInst() local
[all …]
/external/python/pybind11/tools/
Dpybind11Config.cmake.in63 set(PN pybind11) variable
66 set(${PN}_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@")
68 set(${PN}_LIBRARY "")
69 set(${PN}_DEFINITIONS USING_${PN})
71 check_required_components(${PN})
83 if(NOT TARGET ${PN}::pybind11)
84 include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets.cmake")
87 …set_property(TARGET ${PN}::pybind11 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE…
88 set_property(TARGET ${PN}::embed APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIBRARIES})
90 … set_property(TARGET ${PN}::module APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIBRARIES})
[all …]
/external/swiftshader/third_party/llvm-7.0/llvm/lib/IR/
DBasicBlock.cpp329 while (PHINode *PN = dyn_cast<PHINode>(&front())) { in removePredecessor() local
331 PN->removeIncomingValue(Pred, !DontDeleteUselessPHIs); in removePredecessor()
335 if (PN->getIncomingValue(0) != PN) in removePredecessor()
336 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in removePredecessor()
339 PN->replaceAllUsesWith(UndefValue::get(PN->getType())); in removePredecessor()
349 PHINode *PN; in removePredecessor() local
350 for (iterator II = begin(); (PN = dyn_cast<PHINode>(II)); ) { in removePredecessor()
352 PN->removeIncomingValue(Pred, false); in removePredecessor()
356 if (!DontDeleteUselessPHIs && (PNV = PN->hasConstantValue())) in removePredecessor()
357 if (PNV != PN) { in removePredecessor()
[all …]
/external/llvm/lib/Transforms/Utils/
DBasicBlockUtils.cpp66 while (PHINode *PN = dyn_cast<PHINode>(BB->begin())) { in FoldSingleEntryPHINodes() local
67 if (PN->getIncomingValue(0) != PN) in FoldSingleEntryPHINodes()
68 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in FoldSingleEntryPHINodes()
70 PN->replaceAllUsesWith(UndefValue::get(PN->getType())); in FoldSingleEntryPHINodes()
73 MemDep->removeInstruction(PN); // Memdep updates AA itself. in FoldSingleEntryPHINodes()
75 PN->eraseFromParent(); in FoldSingleEntryPHINodes()
84 PHINode *PN = dyn_cast<PHINode>(I); ++I) in DeleteDeadPHIs()
85 PHIs.push_back(PN); in DeleteDeadPHIs()
89 if (PHINode *PN = dyn_cast_or_null<PHINode>(PHIs[i].operator Value*())) in DeleteDeadPHIs() local
90 Changed |= RecursivelyDeleteDeadPHINode(PN, TLI); in DeleteDeadPHIs()
[all …]
DLoopSimplify.cpp211 PHINode *PN = cast<PHINode>(I); in findPHIToPartitionLoops() local
213 if (Value *V = SimplifyInstruction(PN, DL, nullptr, DT, AC)) { in findPHIToPartitionLoops()
215 PN->replaceAllUsesWith(V); in findPHIToPartitionLoops()
216 PN->eraseFromParent(); in findPHIToPartitionLoops()
221 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in findPHIToPartitionLoops()
222 if (PN->getIncomingValue(i) == PN && in findPHIToPartitionLoops()
223 L->contains(PN->getIncomingBlock(i))) in findPHIToPartitionLoops()
225 return PN; in findPHIToPartitionLoops()
261 PHINode *PN = findPHIToPartitionLoops(L, DT, AC); in separateNestedLoop() local
262 if (!PN) return nullptr; // No known way to partition. in separateNestedLoop()
[all …]
DLCSSA.cpp80 if (PHINode *PN = dyn_cast<PHINode>(User)) in processInstruction() local
81 UserBB = PN->getIncomingBlock(U); in processInstruction()
119 PHINode *PN = PHINode::Create(Inst.getType(), PredCache.size(ExitBB), in processInstruction() local
124 PN->addIncoming(&Inst, Pred); in processInstruction()
131 &PN->getOperandUse(PN->getOperandNumForIncomingValue( in processInstruction()
132 PN->getNumIncomingValues() - 1))); in processInstruction()
135 AddedPHIs.push_back(PN); in processInstruction()
138 SSAUpdate.AddAvailableValue(ExitBB, PN); in processInstruction()
150 PostProcessPHIs.push_back(PN); in processInstruction()
162 if (PHINode *PN = dyn_cast<PHINode>(User)) in processInstruction() local
[all …]
DLoopUnrollRuntime.cpp77 PHINode *PN = dyn_cast<PHINode>(&BBI); in ConnectProlog() local
79 if (!PN) in ConnectProlog()
83 PHINode *NewPN = PHINode::Create(PN->getType(), 2, PN->getName() + ".unr", in ConnectProlog()
87 if (L->contains(PN)) { in ConnectProlog()
88 NewPN->addIncoming(PN->getIncomingValueForBlock(NewPreHeader), in ConnectProlog()
91 NewPN->addIncoming(UndefValue::get(PN->getType()), PreHeader); in ConnectProlog()
94 Value *V = PN->getIncomingValueForBlock(Latch); in ConnectProlog()
107 if (L->contains(PN)) { in ConnectProlog()
108 PN->setIncomingValue(PN->getBasicBlockIndex(NewPreHeader), NewPN); in ConnectProlog()
110 PN->addIncoming(NewPN, PrologExit); in ConnectProlog()
[all …]
DBreakCriticalEdges.cpp92 PHINode *PN = dyn_cast<PHINode>(I); ++I) { in createPHIsForSplitLoopExit()
93 unsigned Idx = PN->getBasicBlockIndex(SplitBB); in createPHIsForSplitLoopExit()
94 Value *V = PN->getIncomingValue(Idx); in createPHIsForSplitLoopExit()
104 PN->getType(), Preds.size(), "split", in createPHIsForSplitLoopExit()
110 PN->setIncomingValue(Idx, NewPN); in createPHIsForSplitLoopExit()
153 PHINode *PN = cast<PHINode>(I); in SplitCriticalEdge() local
160 if (PN->getIncomingBlock(BBIdx) != TIBB) in SplitCriticalEdge()
161 BBIdx = PN->getBasicBlockIndex(TIBB); in SplitCriticalEdge()
162 PN->setIncomingBlock(BBIdx, NewBB); in SplitCriticalEdge()
196 if (PHINode *PN = dyn_cast<PHINode>(DestBB->begin())) { in SplitCriticalEdge() local
[all …]
DCloneFunction.cpp450 if (const PHINode *PN = dyn_cast<PHINode>(I)) { in CloneAndPruneIntoFromInst() local
451 if (isa<PHINode>(VMap[PN])) in CloneAndPruneIntoFromInst()
452 PHIToResolve.push_back(PN); in CloneAndPruneIntoFromInst()
480 PHINode *PN = cast<PHINode>(VMap[OPN]); in CloneAndPruneIntoFromInst() local
482 Value *V = VMap.lookup(PN->getIncomingBlock(pred)); in CloneAndPruneIntoFromInst()
484 Value *InVal = MapValue(PN->getIncomingValue(pred), in CloneAndPruneIntoFromInst()
488 PN->setIncomingValue(pred, InVal); in CloneAndPruneIntoFromInst()
489 PN->setIncomingBlock(pred, MappedBlock); in CloneAndPruneIntoFromInst()
491 PN->removeIncomingValue(pred, false); in CloneAndPruneIntoFromInst()
503 PHINode *PN = cast<PHINode>(NewBB->begin()); in CloneAndPruneIntoFromInst() local
[all …]
DCodeExtractor.cpp188 PHINode *PN = dyn_cast<PHINode>(Header->begin()); in severSplitPHINodes() local
189 if (!PN) return; // No PHI nodes. in severSplitPHINodes()
194 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in severSplitPHINodes()
195 if (Blocks.count(PN->getIncomingBlock(i))) in severSplitPHINodes()
228 PHINode *PN = cast<PHINode>(OldPred->begin()); in severSplitPHINodes() local
231 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in severSplitPHINodes()
232 if (Blocks.count(PN->getIncomingBlock(i))) { in severSplitPHINodes()
233 TerminatorInst *TI = PN->getIncomingBlock(i)->getTerminator(); in severSplitPHINodes()
240 PHINode *PN = cast<PHINode>(AfterPHIs); in severSplitPHINodes() local
243 PHINode *NewPN = PHINode::Create(PN->getType(), 1 + NumPredsFromRegion, in severSplitPHINodes()
[all …]
DUnifyFunctionExitNodes.cpp91 PHINode *PN = nullptr; in runOnFunction() local
96 PN = PHINode::Create(F.getReturnType(), ReturningBlocks.size(), in runOnFunction()
98 NewRetBlock->getInstList().push_back(PN); in runOnFunction()
99 ReturnInst::Create(F.getContext(), PN, NewRetBlock); in runOnFunction()
108 if (PN) in runOnFunction()
109 PN->addIncoming(BB->getTerminator()->getOperand(0), BB); in runOnFunction()
/external/swiftshader/third_party/llvm-7.0/llvm/lib/Transforms/Scalar/
DSpeculateAroundPHIs.cpp50 isSafeToSpeculatePHIUsers(PHINode &PN, DominatorTree &DT, in isSafeToSpeculatePHIUsers() argument
53 auto *PhiBB = PN.getParent(); in isSafeToSpeculatePHIUsers()
58 for (Use &U : PN.uses()) { in isSafeToSpeculatePHIUsers()
196 PHINode &PN, SmallDenseMap<PHINode *, int, 16> &CostSavingsMap, in isSafeAndProfitableToSpeculateAroundPHI() argument
211 for (int i : llvm::seq<int>(0, PN.getNumIncomingValues())) { in isSafeAndProfitableToSpeculateAroundPHI()
212 auto *IncomingC = dyn_cast<ConstantInt>(PN.getIncomingValue(i)); in isSafeAndProfitableToSpeculateAroundPHI()
217 if (!IncomingConstantBlocks.insert(PN.getIncomingBlock(i)).second) in isSafeAndProfitableToSpeculateAroundPHI()
232 LLVM_DEBUG(dbgs() << " Free: " << PN << "\n"); in isSafeAndProfitableToSpeculateAroundPHI()
239 if (!isSafeToSpeculatePHIUsers(PN, DT, PotentialSpecSet, UnsafeSet)) { in isSafeAndProfitableToSpeculateAroundPHI()
240 LLVM_DEBUG(dbgs() << " Unsafe PHI: " << PN << "\n"); in isSafeAndProfitableToSpeculateAroundPHI()
[all …]
/external/swiftshader/third_party/llvm-7.0/llvm/lib/Analysis/
DPhiValues.cpp101 const PhiValues::ValueSet &PhiValues::getValuesForPhi(const PHINode *PN) { in getValuesForPhi() argument
102 if (DepthMap.count(PN) == 0) { in getValuesForPhi()
104 processPhi(PN, Stack); in getValuesForPhi()
107 assert(DepthMap.lookup(PN) != 0); in getValuesForPhi()
108 return NonPhiReachableMap[DepthMap[PN]]; in getValuesForPhi()
120 if (const PHINode *PN = dyn_cast<PHINode>(V)) in invalidateValue() local
121 DepthMap.erase(PN); in invalidateValue()
137 for (const PHINode &PN : BB.phis()) { in print() local
139 PN.printAsOperand(OS, false); in print()
141 unsigned int N = DepthMap.lookup(&PN); in print()
[all …]
/external/llvm/lib/Analysis/
DSparsePropagation.cpp230 void SparseSolver::visitPHINode(PHINode &PN) { in visitPHINode() argument
234 if (LatticeFunc->IsSpecialCasedPHI(&PN)) { in visitPHINode()
235 LatticeVal IV = LatticeFunc->ComputeInstructionState(PN, *this); in visitPHINode()
237 UpdateState(PN, IV); in visitPHINode()
241 LatticeVal PNIV = getOrInitValueState(&PN); in visitPHINode()
250 if (PN.getNumIncomingValues() > 64) { in visitPHINode()
251 UpdateState(PN, Overdefined); in visitPHINode()
258 for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) { in visitPHINode()
260 if (!isEdgeFeasible(PN.getIncomingBlock(i), PN.getParent(), true)) in visitPHINode()
264 LatticeVal OpVal = getOrInitValueState(PN.getIncomingValue(i)); in visitPHINode()
[all …]
/external/swiftshader/third_party/llvm-7.0/llvm/lib/Transforms/ObjCARC/
DObjCARC.h87 void getEquivalentPHIs(PHINodeTy &PN, VectorTy &PHIList) { in getEquivalentPHIs() argument
88 auto *BB = PN.getParent(); in getEquivalentPHIs()
90 if (&P == &PN) // Do not add PN to the list. in getEquivalentPHIs()
92 unsigned I = 0, E = PN.getNumIncomingValues(); in getEquivalentPHIs()
94 auto *BB = PN.getIncomingBlock(I); in getEquivalentPHIs()
95 auto *PNOpnd = PN.getIncomingValue(I)->stripPointerCasts(); in getEquivalentPHIs()
/external/swiftshader/third_party/llvm-7.0/llvm/lib/Target/Hexagon/
DHexagonVectorLoopCarriedReuse.cpp382 PHINode *PN = cast<PHINode>(D->front()); in findValueToReuse() local
385 BasicBlock *BB = PN->getParent(); in findValueToReuse()
386 LLVM_DEBUG(dbgs() << "Checking if any uses of " << *PN in findValueToReuse()
390 for (auto UI = PN->use_begin(), E = PN->use_end(); UI != E; ++UI) { in findValueToReuse()
460 PHINode *PN = dyn_cast<PHINode>(Op); in findValueInBlock() local
461 assert(PN); in findValueInBlock()
462 Value *ValueInBlock = PN->getIncomingValueForBlock(BB); in findValueInBlock()
566 PHINode *PN = dyn_cast<PHINode>(I); in findDepChainFromPHI() local
567 if (!PN) { in findDepChainFromPHI()
571 auto NumIncomingValues = PN->getNumIncomingValues(); in findDepChainFromPHI()
[all …]
/external/swiftshader/third_party/llvm-7.0/llvm/include/llvm/IR/
DBasicBlock.h288 PHINodeT *PN; variable
290 phi_iterator_impl(PHINodeT *PN) : PN(PN) {} in phi_iterator_impl() argument
300 : PN(Arg.PN) {} in phi_iterator_impl()
302 bool operator==(const phi_iterator_impl &Arg) const { return PN == Arg.PN; }
304 PHINodeT &operator*() const { return *PN; }
308 assert(PN && "Cannot increment the end iterator!");
309 PN = dyn_cast<PHINodeT>(std::next(BBIteratorT(PN)));

12345678910>>...28