reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/InstCombine/InstCombinePHI.cpp
 1128   if (Value *V = SimplifyInstruction(&PN, SQ.getWithInstruction(&PN)))
 1128   if (Value *V = SimplifyInstruction(&PN, SQ.getWithInstruction(&PN)))
 1129     return replaceInstUsesWith(PN, V);
 1131   if (Instruction *Result = FoldPHIArgZextsIntoPHI(PN))
 1136   if (isa<Instruction>(PN.getIncomingValue(0)) &&
 1137       isa<Instruction>(PN.getIncomingValue(1)) &&
 1138       cast<Instruction>(PN.getIncomingValue(0))->getOpcode() ==
 1139       cast<Instruction>(PN.getIncomingValue(1))->getOpcode() &&
 1142       PN.getIncomingValue(0)->hasOneUse())
 1143     if (Instruction *Result = FoldPHIArgOpIntoPHI(PN))
 1149   if (PN.hasOneUse()) {
 1150     if (Instruction *Result = FoldIntegerTypedPHI(PN))
 1153     Instruction *PHIUser = cast<Instruction>(PN.user_back());
 1156       PotentiallyDeadPHIs.insert(&PN);
 1158         return replaceInstUsesWith(PN, UndefValue::get(PN.getType()));
 1158         return replaceInstUsesWith(PN, UndefValue::get(PN.getType()));
 1169         PHIUser->user_back() == &PN) {
 1170       return replaceInstUsesWith(PN, UndefValue::get(PN.getType()));
 1170       return replaceInstUsesWith(PN, UndefValue::get(PN.getType()));
 1182     if (CmpInst && isa<IntegerType>(PN.getType()) && CmpInst->isEquality() &&
 1185       for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) {
 1186         Instruction *CtxI = PN.getIncomingBlock(i)->getTerminator();
 1187         Value *VA = PN.getIncomingValue(i);
 1190             NonZeroConst = GetAnyNonZeroConstInt(PN);
 1191           PN.setIncomingValue(i, NonZeroConst);
 1204     unsigned InValNo = 0, NumIncomingVals = PN.getNumIncomingValues();
 1207            isa<PHINode>(PN.getIncomingValue(InValNo)))
 1211       Value *NonPhiInVal = PN.getIncomingValue(InValNo);
 1216         Value *OpVal = PN.getIncomingValue(InValNo);
 1226         if (PHIsEqualValue(&PN, NonPhiInVal, ValueEqualPHIs))
 1227           return replaceInstUsesWith(PN, NonPhiInVal);
 1236   PHINode *FirstPN = cast<PHINode>(PN.getParent()->begin());
 1237   if (&PN != FirstPN)
 1239       BasicBlock *BBA = PN.getIncomingBlock(i);
 1242         Value *VA = PN.getIncomingValue(i);
 1243         unsigned j = PN.getBasicBlockIndex(BBB);
 1244         Value *VB = PN.getIncomingValue(j);
 1245         PN.setIncomingBlock(i, BBB);
 1246         PN.setIncomingValue(i, VB);
 1247         PN.setIncomingBlock(j, BBA);
 1248         PN.setIncomingValue(j, VA);
 1260   if (PN.getType()->isIntegerTy() &&
 1261       !DL.isLegalInteger(PN.getType()->getPrimitiveSizeInBits()))
 1262     if (Instruction *Res = SliceUpIllegalIntegerPHI(PN))