reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1544 assert(ExtendKindMap.count(DU.NarrowDef) && 1548 if (PHINode *UsePhi = dyn_cast<PHINode>(DU.NarrowUse)) { 1554 truncateIVUse(DU, DT, LI); 1563 PHINode::Create(DU.WideDef->getType(), 1, UsePhi->getName() + ".wide", 1565 WidePhi->addIncoming(DU.WideDef, UsePhi->getIncomingBlock(0)); 1567 Value *Trunc = Builder.CreateTrunc(WidePhi, DU.NarrowDef->getType()); 1580 return DU.NeverNegative || getExtendKind(DU.NarrowDef) == SignExtended; 1580 return DU.NeverNegative || getExtendKind(DU.NarrowDef) == SignExtended; 1583 return DU.NeverNegative || getExtendKind(DU.NarrowDef) == ZeroExtended; 1583 return DU.NeverNegative || getExtendKind(DU.NarrowDef) == ZeroExtended; 1587 if ((isa<SExtInst>(DU.NarrowUse) && canWidenBySExt()) || 1588 (isa<ZExtInst>(DU.NarrowUse) && canWidenByZExt())) { 1589 Value *NewDef = DU.WideDef; 1590 if (DU.NarrowUse->getType() != WideType) { 1591 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType()); 1595 IRBuilder<> Builder(DU.NarrowUse); 1596 NewDef = Builder.CreateTrunc(DU.WideDef, DU.NarrowUse->getType()); 1596 NewDef = Builder.CreateTrunc(DU.WideDef, DU.NarrowUse->getType()); 1603 << " not wide enough to subsume " << *DU.NarrowUse 1605 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); 1605 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); 1605 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); 1606 NewDef = DU.NarrowUse; 1609 if (NewDef != DU.NarrowUse) { 1610 LLVM_DEBUG(dbgs() << "INDVARS: eliminating " << *DU.NarrowUse 1611 << " replaced by " << *DU.WideDef << "\n"); 1613 DU.NarrowUse->replaceAllUsesWith(NewDef); 1614 DeadInsts.emplace_back(DU.NarrowUse); 1627 WidenedRecTy WideAddRec = getExtendedOperandRecurrence(DU); 1629 WideAddRec = getWideRecurrence(DU); 1635 if (widenLoopCompare(DU)) 1643 if (widenWithVariantLoadUse(DU)) { 1644 widenWithVariantLoadUseCodegen(DU); 1651 truncateIVUse(DU, DT, LI); 1656 assert(DU.NarrowUse != DU.NarrowUse->getParent()->getTerminator() && 1656 assert(DU.NarrowUse != DU.NarrowUse->getParent()->getTerminator() && 1663 Rewriter.hoistIVInc(WideInc, DU.NarrowUse)) 1666 WideUse = cloneIVUser(DU, WideAddRec.first); 1685 replaceAllDbgUsesWith(*DU.NarrowUse, *WideUse, *WideUse, *DT); 1687 ExtendKindMap[DU.NarrowUse] = WideAddRec.second;