/external/llvm/lib/Transforms/InstCombine/ |
D | InstCombinePHI.cpp | 24 Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) { in FoldPHIArgBinOpIntoPHI() argument 25 Instruction *FirstInst = cast<Instruction>(PN.getIncomingValue(0)); in FoldPHIArgBinOpIntoPHI() 44 for (unsigned i = 1; i != PN.getNumIncomingValues(); ++i) { in FoldPHIArgBinOpIntoPHI() 45 Instruction *I = dyn_cast<Instruction>(PN.getIncomingValue(i)); in FoldPHIArgBinOpIntoPHI() 83 NewLHS = PHINode::Create(LHSType, PN.getNumIncomingValues(), in FoldPHIArgBinOpIntoPHI() 85 NewLHS->addIncoming(InLHS, PN.getIncomingBlock(0)); in FoldPHIArgBinOpIntoPHI() 86 InsertNewInstBefore(NewLHS, PN); in FoldPHIArgBinOpIntoPHI() 91 NewRHS = PHINode::Create(RHSType, PN.getNumIncomingValues(), in FoldPHIArgBinOpIntoPHI() 93 NewRHS->addIncoming(InRHS, PN.getIncomingBlock(0)); in FoldPHIArgBinOpIntoPHI() 94 InsertNewInstBefore(NewRHS, PN); in FoldPHIArgBinOpIntoPHI() [all …]
|
/external/llvm/lib/IR/ |
D | BasicBlock.cpp | 250 while (PHINode *PN = dyn_cast<PHINode>(&front())) { in removePredecessor() local 252 PN->removeIncomingValue(Pred, !DontDeleteUselessPHIs); in removePredecessor() 256 if (PN->getIncomingValue(0) != PN) in removePredecessor() 257 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in removePredecessor() 260 PN->replaceAllUsesWith(UndefValue::get(PN->getType())); in removePredecessor() 270 PHINode *PN; in removePredecessor() local 271 for (iterator II = begin(); (PN = dyn_cast<PHINode>(II)); ) { in removePredecessor() 273 PN->removeIncomingValue(Pred, false); in removePredecessor() 277 if (!DontDeleteUselessPHIs && (PNV = PN->hasConstantValue())) in removePredecessor() 278 if (PNV != PN) { in removePredecessor() [all …]
|
D | Dominators.cpp | 222 PHINode *PN = dyn_cast<PHINode>(UserInst); in dominates() local 223 if (PN && PN->getParent() == BBE.getEnd() && in dominates() 224 PN->getIncomingBlock(U) == BBE.getStart()) in dominates() 230 if (PN) in dominates() 231 UseBB = PN->getIncomingBlock(U); in dominates() 246 if (PHINode *PN = dyn_cast<PHINode>(UserInst)) in dominates() local 247 UseBB = PN->getIncomingBlock(U); in dominates() 297 if (PHINode *PN = dyn_cast<PHINode>(I)) in isReachableFromEntry() local 298 return isReachableFromEntry(PN->getIncomingBlock(U)); in isReachableFromEntry()
|
/external/llvm/lib/Transforms/Utils/ |
D | LoopSimplify.cpp | 274 PHINode *PN; in ProcessLoop() local 276 (PN = dyn_cast<PHINode>(I++)); ) in ProcessLoop() 277 if (Value *V = SimplifyInstruction(PN, 0, 0, DT)) { in ProcessLoop() 278 if (AA) AA->deleteValue(PN); in ProcessLoop() 279 if (SE) SE->forgetValue(PN); in ProcessLoop() 280 PN->replaceAllUsesWith(V); in ProcessLoop() 281 PN->eraseFromParent(); in ProcessLoop() 472 PHINode *PN = cast<PHINode>(I); in FindPHIToPartitionLoops() local 474 if (Value *V = SimplifyInstruction(PN, 0, 0, DT)) { in FindPHIToPartitionLoops() 476 PN->replaceAllUsesWith(V); in FindPHIToPartitionLoops() [all …]
|
D | Local.cpp | 376 bool llvm::RecursivelyDeleteDeadPHINode(PHINode *PN, in RecursivelyDeleteDeadPHINode() argument 379 for (Instruction *I = PN; areAllUsesEqual(I) && !I->mayHaveSideEffects(); in RecursivelyDeleteDeadPHINode() 460 while (PHINode *PN = dyn_cast<PHINode>(PhiIt)) { in RemovePredecessorAndSimplify() local 464 if (!recursivelySimplifyInstruction(PN, TD)) in RemovePredecessorAndSimplify() 482 while (PHINode *PN = dyn_cast<PHINode>(DestBB->begin())) { in MergeBasicBlockIntoOnlyPred() local 483 Value *NewVal = PN->getIncomingValue(0); in MergeBasicBlockIntoOnlyPred() 485 if (NewVal == PN) NewVal = UndefValue::get(PN->getType()); in MergeBasicBlockIntoOnlyPred() 486 PN->replaceAllUsesWith(NewVal); in MergeBasicBlockIntoOnlyPred() 487 PN->eraseFromParent(); in MergeBasicBlockIntoOnlyPred() 555 PHINode *PN = cast<PHINode>(I); in CanPropagatePredecessorsForPHIs() local [all …]
|
D | BasicBlockUtils.cpp | 78 while (PHINode *PN = dyn_cast<PHINode>(BB->begin())) { in FoldSingleEntryPHINodes() local 79 if (PN->getIncomingValue(0) != PN) in FoldSingleEntryPHINodes() 80 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in FoldSingleEntryPHINodes() 82 PN->replaceAllUsesWith(UndefValue::get(PN->getType())); in FoldSingleEntryPHINodes() 85 MemDep->removeInstruction(PN); // Memdep updates AA itself. in FoldSingleEntryPHINodes() 86 else if (AA && isa<PointerType>(PN->getType())) in FoldSingleEntryPHINodes() 87 AA->deleteValue(PN); in FoldSingleEntryPHINodes() 89 PN->eraseFromParent(); in FoldSingleEntryPHINodes() 103 PHINode *PN = dyn_cast<PHINode>(I); ++I) in DeleteDeadPHIs() 104 PHIs.push_back(PN); in DeleteDeadPHIs() [all …]
|
D | CloneFunction.cpp | 411 if (const PHINode *PN = dyn_cast<PHINode>(I)) in CloneAndPruneFunctionInto() local 412 PHIToResolve.push_back(PN); in CloneAndPruneFunctionInto() 435 PHINode *PN = cast<PHINode>(VMap[OPN]); in CloneAndPruneFunctionInto() local 437 Value *V = VMap[PN->getIncomingBlock(pred)]; in CloneAndPruneFunctionInto() 439 Value *InVal = MapValue(PN->getIncomingValue(pred), in CloneAndPruneFunctionInto() 443 PN->setIncomingValue(pred, InVal); in CloneAndPruneFunctionInto() 444 PN->setIncomingBlock(pred, MappedBlock); in CloneAndPruneFunctionInto() 446 PN->removeIncomingValue(pred, false); in CloneAndPruneFunctionInto() 457 PHINode *PN = cast<PHINode>(NewBB->begin()); in CloneAndPruneFunctionInto() local 459 if (NumPreds != PN->getNumIncomingValues()) { in CloneAndPruneFunctionInto() [all …]
|
D | BreakCriticalEdges.cpp | 102 PHINode *PN = dyn_cast<PHINode>(I); ++I) { in createPHIsForSplitLoopExit() 103 unsigned Idx = PN->getBasicBlockIndex(SplitBB); in createPHIsForSplitLoopExit() 104 Value *V = PN->getIncomingValue(Idx); in createPHIsForSplitLoopExit() 114 PHINode::Create(PN->getType(), Preds.size(), "split", in createPHIsForSplitLoopExit() 121 PN->setIncomingValue(Idx, NewPN); in createPHIsForSplitLoopExit() 181 PHINode *PN = cast<PHINode>(I); in SplitCriticalEdge() local 188 if (PN->getIncomingBlock(BBIdx) != TIBB) in SplitCriticalEdge() 189 BBIdx = PN->getBasicBlockIndex(TIBB); in SplitCriticalEdge() 190 PN->setIncomingBlock(BBIdx, NewBB); in SplitCriticalEdge() 231 if (PHINode *PN = dyn_cast<PHINode>(DestBB->begin())) { in SplitCriticalEdge() local [all …]
|
D | LCSSA.cpp | 198 if (PHINode *PN = dyn_cast<PHINode>(U)) in ProcessInstruction() local 199 UserBB = PN->getIncomingBlock(UI); in ProcessInstruction() 235 PHINode *PN = PHINode::Create(Inst->getType(), in ProcessInstruction() local 242 PN->addIncoming(Inst, *PI); in ProcessInstruction() 249 &PN->getOperandUse( in ProcessInstruction() 250 PN->getOperandNumForIncomingValue(PN->getNumIncomingValues()-1))); in ProcessInstruction() 253 AddedPHIs.push_back(PN); in ProcessInstruction() 256 SSAUpdate.AddAvailableValue(ExitBB, PN); in ProcessInstruction() 268 if (PHINode *PN = dyn_cast<PHINode>(User)) in ProcessInstruction() local 269 UserBB = PN->getIncomingBlock(*UsesToRewrite[i]); in ProcessInstruction()
|
D | UnifyFunctionExitNodes.cpp | 94 PHINode *PN = 0; in runOnFunction() local 99 PN = PHINode::Create(F.getReturnType(), ReturningBlocks.size(), in runOnFunction() 101 NewRetBlock->getInstList().push_back(PN); in runOnFunction() 102 ReturnInst::Create(F.getContext(), PN, NewRetBlock); in runOnFunction() 114 if (PN) in runOnFunction() 115 PN->addIncoming(BB->getTerminator()->getOperand(0), BB); in runOnFunction()
|
D | CodeExtractor.cpp | 192 PHINode *PN = dyn_cast<PHINode>(Header->begin()); in severSplitPHINodes() local 193 if (!PN) return; // No PHI nodes. in severSplitPHINodes() 198 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in severSplitPHINodes() 199 if (Blocks.count(PN->getIncomingBlock(i))) in severSplitPHINodes() 232 PHINode *PN = cast<PHINode>(OldPred->begin()); in severSplitPHINodes() local 235 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in severSplitPHINodes() 236 if (Blocks.count(PN->getIncomingBlock(i))) { in severSplitPHINodes() 237 TerminatorInst *TI = PN->getIncomingBlock(i)->getTerminator(); in severSplitPHINodes() 244 PHINode *PN = cast<PHINode>(AfterPHIs); in severSplitPHINodes() local 247 PHINode *NewPN = PHINode::Create(PN->getType(), 1 + NumPredsFromRegion, in severSplitPHINodes() [all …]
|
D | LoopUnrollRuntime.cpp | 71 PHINode *PN = dyn_cast<PHINode>(BBI); ++BBI) { in ConnectProlog() 75 PHINode *NewPN = PHINode::Create(PN->getType(), 2, PN->getName()+".unr", in ConnectProlog() 79 if (L->contains(PN)) { in ConnectProlog() 80 NewPN->addIncoming(PN->getIncomingValueForBlock(NewPH), OrigPH); in ConnectProlog() 82 NewPN->addIncoming(Constant::getNullValue(PN->getType()), OrigPH); in ConnectProlog() 85 Value *V = PN->getIncomingValueForBlock(Latch); in ConnectProlog() 98 if (L->contains(PN)) { in ConnectProlog() 99 PN->setIncomingValue(PN->getBasicBlockIndex(NewPH), NewPN); in ConnectProlog() 101 PN->addIncoming(NewPN, PrologEnd); in ConnectProlog()
|
D | DemoteRegToStack.cpp | 45 if (PHINode *PN = dyn_cast<PHINode>(U)) { in DemoteRegToStack() local 56 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in DemoteRegToStack() 57 if (PN->getIncomingValue(i) == &I) { in DemoteRegToStack() 58 Value *&V = Loads[PN->getIncomingBlock(i)]; in DemoteRegToStack() 62 PN->getIncomingBlock(i)->getTerminator()); in DemoteRegToStack() 64 PN->setIncomingValue(i, V); in DemoteRegToStack()
|
D | SimplifyCFG.cpp | 134 PHINode *PN = cast<PHINode>(BBI); in SafeToMergeTerminators() local 135 if (PN->getIncomingValueForBlock(SI1BB) != in SafeToMergeTerminators() 136 PN->getIncomingValueForBlock(SI2BB)) in SafeToMergeTerminators() 175 PHINode *PN = cast<PHINode>(BBI); in isProfitableToFoldUnconditional() local 176 if (PN->getIncomingValueForBlock(SI1BB) != Cond || in isProfitableToFoldUnconditional() 177 !isa<ConstantInt>(PN->getIncomingValueForBlock(SI2BB))) in isProfitableToFoldUnconditional() 179 PhiNodes.push_back(PN); in isProfitableToFoldUnconditional() 192 PHINode *PN; in AddPredecessorToBlock() local 194 (PN = dyn_cast<PHINode>(I)); ++I) in AddPredecessorToBlock() 195 PN->addIncoming(PN->getIncomingValueForBlock(ExistPred), NewPred); in AddPredecessorToBlock() [all …]
|
D | LoopUnroll.cpp | 50 if (PHINode *PN = dyn_cast<PHINode>(I)) { in RemapInstruction() local 51 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { in RemapInstruction() 52 ValueToValueMapTy::iterator It = VMap.find(PN->getIncomingBlock(i)); in RemapInstruction() 54 PN->setIncomingBlock(i, cast<BasicBlock>(It->second)); in RemapInstruction() 332 PHINode *PN = OrigPHINode[i]; in UnrollLoop() local 334 PN->replaceAllUsesWith(PN->getIncomingValueForBlock(Preheader)); in UnrollLoop() 335 Header->getInstList().erase(PN); in UnrollLoop() 338 Value *InVal = PN->removeIncomingValue(LatchBlock, false); in UnrollLoop() 346 PN->addIncoming(InVal, Latches.back()); in UnrollLoop()
|
D | LowerSwitch.cpp | 207 PHINode* PN = cast<PHINode>(I); in newLeafBlock() local 212 PN->removeIncomingValue(OrigBlock); in newLeafBlock() 215 int BlockIdx = PN->getBasicBlockIndex(OrigBlock); in newLeafBlock() 217 PN->setIncomingBlock((unsigned)BlockIdx, NewLeaf); in newLeafBlock() 282 PHINode *PN = cast<PHINode>(I); in processSwitchInst() local 283 int BlockIdx = PN->getBasicBlockIndex(OrigBlock); in processSwitchInst() 285 PN->setIncomingBlock((unsigned)BlockIdx, NewDefault); in processSwitchInst()
|
/external/llvm/lib/Analysis/ |
D | SparsePropagation.cpp | 229 void SparseSolver::visitPHINode(PHINode &PN) { in visitPHINode() argument 233 if (LatticeFunc->IsSpecialCasedPHI(&PN)) { in visitPHINode() 234 LatticeVal IV = LatticeFunc->ComputeInstructionState(PN, *this); in visitPHINode() 236 UpdateState(PN, IV); in visitPHINode() 240 LatticeVal PNIV = getOrInitValueState(&PN); in visitPHINode() 249 if (PN.getNumIncomingValues() > 64) { in visitPHINode() 250 UpdateState(PN, Overdefined); in visitPHINode() 257 for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) { in visitPHINode() 259 if (!isEdgeFeasible(PN.getIncomingBlock(i), PN.getParent(), true)) in visitPHINode() 263 LatticeVal OpVal = getOrInitValueState(PN.getIncomingValue(i)); in visitPHINode() [all …]
|
D | ScalarEvolutionExpander.cpp | 861 bool SCEVExpander::isNormalAddRecExprPHI(PHINode *PN, Instruction *IncV, in isNormalAddRecExprPHI() argument 884 if (IncV != PN) in isNormalAddRecExprPHI() 887 return isNormalAddRecExprPHI(PN, IncV, L); in isNormalAddRecExprPHI() 984 bool SCEVExpander::isExpandedAddRecExprPHI(PHINode *PN, Instruction *IncV, in isExpandedAddRecExprPHI() argument 989 if (IVOper == PN) in isExpandedAddRecExprPHI() 998 Value *SCEVExpander::expandIVInc(PHINode *PN, Value *StepV, const Loop *L, in expandIVInc() argument 1011 IncV = expandAddToGEP(StepArray, StepArray+1, GEPPtrTy, IntTy, PN); in expandIVInc() 1012 if (IncV->getType() != PN->getType()) { in expandIVInc() 1013 IncV = Builder.CreateBitCast(IncV, PN->getType()); in expandIVInc() 1018 Builder.CreateSub(PN, StepV, Twine(IVName) + ".iv.next") : in expandIVInc() [all …]
|
/external/llvm/lib/Transforms/Scalar/ |
D | IndVarSimplify.cpp | 241 void IndVarSimplify::HandleFloatingPointIV(Loop *L, PHINode *PN) { in HandleFloatingPointIV() argument 242 unsigned IncomingEdge = L->contains(PN->getIncomingBlock(0)); in HandleFloatingPointIV() 247 dyn_cast<ConstantFP>(PN->getIncomingValue(IncomingEdge)); in HandleFloatingPointIV() 256 dyn_cast<BinaryOperator>(PN->getIncomingValue(BackEdge)); in HandleFloatingPointIV() 263 if (IncValueVal == 0 || Incr->getOperand(0) != PN || in HandleFloatingPointIV() 393 IntegerType *Int32Ty = Type::getInt32Ty(PN->getContext()); in HandleFloatingPointIV() 396 PHINode *NewPHI = PHINode::Create(Int32Ty, 2, PN->getName()+".int", PN); in HandleFloatingPointIV() 398 PN->getIncomingBlock(IncomingEdge)); in HandleFloatingPointIV() 403 NewPHI->addIncoming(NewAdd, PN->getIncomingBlock(BackEdge)); in HandleFloatingPointIV() 411 WeakVH WeakPH = PN; in HandleFloatingPointIV() [all …]
|
D | JumpThreading.cpp | 129 bool ProcessBranchOnPHI(PHINode *PN); 379 if (PHINode *PN = dyn_cast<PHINode>(I)) { in ComputeValueKnownInPredecessors() local 380 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { in ComputeValueKnownInPredecessors() 381 Value *InVal = PN->getIncomingValue(i); in ComputeValueKnownInPredecessors() 383 Result.push_back(std::make_pair(KC, PN->getIncomingBlock(i))); in ComputeValueKnownInPredecessors() 386 PN->getIncomingBlock(i), BB); in ComputeValueKnownInPredecessors() 388 Result.push_back(std::make_pair(KC, PN->getIncomingBlock(i))); in ComputeValueKnownInPredecessors() 484 PHINode *PN = dyn_cast<PHINode>(Cmp->getOperand(0)); in ComputeValueKnownInPredecessors() local 485 if (PN && PN->getParent() == BB) { in ComputeValueKnownInPredecessors() 488 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { in ComputeValueKnownInPredecessors() [all …]
|
D | LoopRotation.cpp | 107 for (I = OrigHeader->begin(); PHINode *PN = dyn_cast<PHINode>(I); ++I) in RewriteUsesOfClonedInstructions() 108 PN->removeIncomingValue(PN->getBasicBlockIndex(OrigPreheader)); in RewriteUsesOfClonedInstructions() 351 for (; PHINode *PN = dyn_cast<PHINode>(I); ++I) in rotateLoop() 352 ValueMap[PN] = PN->getIncomingValueForBlock(OrigPreheader); in rotateLoop() 404 PHINode *PN = dyn_cast<PHINode>(BI); ++BI) in rotateLoop() 405 PN->addIncoming(PN->getIncomingValueForBlock(OrigHeader), OrigPreheader); in rotateLoop()
|
D | CodeGenPrepare.cpp | 320 while (const PHINode *PN = dyn_cast<PHINode>(BBI++)) { in CanMergeBlocks() local 321 for (Value::const_use_iterator UI = PN->use_begin(), E = PN->use_end(); in CanMergeBlocks() 362 while (const PHINode *PN = dyn_cast<PHINode>(BBI++)) { in CanMergeBlocks() local 363 const Value *V1 = PN->getIncomingValueForBlock(Pred); in CanMergeBlocks() 364 const Value *V2 = PN->getIncomingValueForBlock(BB); in CanMergeBlocks() 408 PHINode *PN; in EliminateMostlyEmptyBlock() local 410 (PN = dyn_cast<PHINode>(BBI)); ++BBI) { in EliminateMostlyEmptyBlock() 412 Value *InVal = PN->removeIncomingValue(BB, false); in EliminateMostlyEmptyBlock() 420 PN->addIncoming(InValPhi->getIncomingValue(i), in EliminateMostlyEmptyBlock() 427 PN->addIncoming(InVal, BBPN->getIncomingBlock(i)); in EliminateMostlyEmptyBlock() [all …]
|
/external/llvm/lib/CodeGen/SelectionDAG/ |
D | FunctionLoweringInfo.cpp | 159 const PHINode *PN = dyn_cast<PHINode>(I); ++I) { in set() 160 if (PN->use_empty()) continue; in set() 163 if (PN->getType()->isEmptyTy()) in set() 166 DebugLoc DL = PN->getDebugLoc(); in set() 167 unsigned PHIReg = ValueMap[PN]; in set() 171 ComputeValueVTs(*TLI, PN->getType(), ValueVTs); in set() 268 void FunctionLoweringInfo::ComputePHILiveOutRegInfo(const PHINode *PN) { in ComputePHILiveOutRegInfo() argument 269 Type *Ty = PN->getType(); in ComputePHILiveOutRegInfo() 281 if (TLI->getNumRegisters(PN->getContext(), IntVT) != 1) in ComputePHILiveOutRegInfo() 283 IntVT = TLI->getTypeToTransformTo(PN->getContext(), IntVT); in ComputePHILiveOutRegInfo() [all …]
|
/external/llvm/include/llvm/Analysis/ |
D | ScalarEvolutionExpander.h | 188 void setChainedPhi(PHINode *PN) { ChainedPhis.insert(PN); } 257 bool isNormalAddRecExprPHI(PHINode *PN, Instruction *IncV, const Loop *L); 259 bool isExpandedAddRecExprPHI(PHINode *PN, Instruction *IncV, const Loop *L); 266 Value *expandIVInc(PHINode *PN, Value *StepV, const Loop *L,
|
/external/llvm/lib/Transforms/ObjCARC/ |
D | ProvenanceAnalysis.cpp | 150 if (const PHINode *PN = dyn_cast<PHINode>(A)) in relatedCheck() local 151 return relatedPHI(PN, B); in relatedCheck() 152 if (const PHINode *PN = dyn_cast<PHINode>(B)) in relatedCheck() local 153 return relatedPHI(PN, A); in relatedCheck()
|