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

References

lib/Transforms/InstCombine/InstructionCombining.cpp
 1619   SmallVector<Value*, 8> Ops(GEP.op_begin(), GEP.op_end());
 1619   SmallVector<Value*, 8> Ops(GEP.op_begin(), GEP.op_end());
 1620   Type *GEPType = GEP.getType();
 1621   Type *GEPEltType = GEP.getSourceElementType();
 1622   if (Value *V = SimplifyGEPInst(GEPEltType, Ops, SQ.getWithInstruction(&GEP)))
 1623     return replaceInstUsesWith(GEP, V);
 1626   if (GEP.getType()->isVectorTy()) {
 1627     auto VWidth = GEP.getType()->getVectorNumElements();
 1630     if (Value *V = SimplifyDemandedVectorElts(&GEP, AllOnesEltMask,
 1632       if (V != &GEP)
 1633         return replaceInstUsesWith(GEP, V);
 1634       return &GEP;
 1642   Value *PtrOp = GEP.getOperand(0);
 1651       DL.getIndexType(GEP.getPointerOperandType()->getScalarType());
 1653   gep_type_iterator GTI = gep_type_begin(GEP);
 1654   for (User::op_iterator I = GEP.op_begin() + 1, E = GEP.op_end(); I != E;
 1654   for (User::op_iterator I = GEP.op_begin() + 1, E = GEP.op_end(); I != E;
 1684     return &GEP;
 1698     if (Op1 == &GEP)
 1709       if (Op2 == &GEP)
 1765       GEP.getParent()->getInstList().insert(
 1766           GEP.getParent()->getFirstInsertionPt(), NewGEP);
 1784       GEP.getParent()->getInstList().insert(
 1785           GEP.getParent()->getFirstInsertionPt(), NewGEP);
 1789     GEP.setOperand(0, NewGEP);
 1797     if (!shouldMergeGEPs(*cast<GEPOperator>(&GEP), *Src))
 1801     if (LI && Src->getNumOperands() == 2 && GEP.getNumOperands() == 2 &&
 1803       if (Loop *L = LI->getLoopFor(GEP.getParent())) {
 1804         Value *GO1 = GEP.getOperand(1);
 1832             GEP.setOperand(1, SO1);
 1833             return &GEP;
 1843             NewGEP->setIsInBounds(GEP.isInBounds());
 1870       Value *GO1 = GEP.getOperand(1);
 1880           SimplifyAddInst(GO1, SO1, false, false, SQ.getWithInstruction(&GEP));
 1888         GEP.setOperand(0, Src->getOperand(0));
 1889         GEP.setOperand(1, Sum);
 1890         return &GEP;
 1894       Indices.append(GEP.op_begin()+2, GEP.op_end());
 1894       Indices.append(GEP.op_begin()+2, GEP.op_end());
 1895     } else if (isa<Constant>(*GEP.idx_begin()) &&
 1896                cast<Constant>(*GEP.idx_begin())->isNullValue() &&
 1900       Indices.append(GEP.idx_begin()+1, GEP.idx_end());
 1900       Indices.append(GEP.idx_begin()+1, GEP.idx_end());
 1904       return GEP.isInBounds() && Src->isInBounds()
 1907                        GEP.getName())
 1910                                              GEP.getName());
 1913   if (GEP.getNumIndices() == 1) {
 1914     unsigned AS = GEP.getPointerAddressSpace();
 1915     if (GEP.getOperand(1)->getType()->getScalarSizeInBits() ==
 1923         V = GEP.getOperand(1);
 1925       } else if (match(GEP.getOperand(1),
 1929       } else if (match(GEP.getOperand(1),
 1950                            m_PtrToInt(m_Specific(GEP.getOperand(0))))))
 1968     if (auto *C = dyn_cast<ConstantInt>(GEP.getOperand(1)))
 1983           SmallVector<Value*, 8> Idx(GEP.idx_begin()+1, GEP.idx_end());
 1983           SmallVector<Value*, 8> Idx(GEP.idx_begin()+1, GEP.idx_end());
 1985               StrippedPtrEltTy, StrippedPtr, Idx, GEP.getName());
 1986           Res->setIsInBounds(GEP.isInBounds());
 1987           if (StrippedPtrTy->getAddressSpace() == GEP.getAddressSpace())
 2006             if (StrippedPtrTy->getAddressSpace() == GEP.getAddressSpace()) {
 2007               GEP.setOperand(0, StrippedPtr);
 2008               GEP.setSourceElementType(XATy);
 2009               return &GEP;
 2020             SmallVector<Value*, 8> Idx(GEP.idx_begin(), GEP.idx_end());
 2020             SmallVector<Value*, 8> Idx(GEP.idx_begin(), GEP.idx_end());
 2022                 GEP.isInBounds()
 2024                                                 Idx, GEP.getName())
 2026                                         GEP.getName());
 2031     } else if (GEP.getNumOperands() == 2) {
 2039         Value *Idx[2] = { Constant::getNullValue(IdxType), GEP.getOperand(1) };
 2041             GEP.isInBounds()
 2043                                             GEP.getName())
 2045                                     GEP.getName());
 2061           Value *Idx = GEP.getOperand(1);
 2077                 GEP.isInBounds() && NSW
 2079                                                 NewIdx, GEP.getName())
 2081                                         GEP.getName());
 2102           Value *Idx = GEP.getOperand(1);
 2121                 GEP.isInBounds() && NSW
 2123                                                 Off, GEP.getName())
 2125                                         GEP.getName());
 2161     if (GEP.getNumOperands() == 3 &&
 2172           GEP.isInBounds()
 2175       NGEP->takeName(&GEP);
 2178       if (NGEP->getType()->getPointerAddressSpace() != GEP.getAddressSpace())
 2181       return replaceInstUsesWith(GEP, NGEP);
 2191     if (!isa<BitCastInst>(SrcOp) && GEP.accumulateConstantOffset(DL, Offset)) {
 2205             return &GEP;
 2209         if (SrcType->getPointerAddressSpace() != GEP.getAddressSpace())
 2220             GEP.isInBounds()
 2225           return replaceInstUsesWith(GEP, NGEP);
 2226         NGEP->takeName(&GEP);
 2228         if (NGEP->getType()->getPointerAddressSpace() != GEP.getAddressSpace())
 2235   if (!GEP.isInBounds()) {
 2243       if (GEP.accumulateConstantOffset(DL, BasePtrOffset) &&
 2248               GEP.getSourceElementType(), PtrOp, makeArrayRef(Ops).slice(1),
 2249               GEP.getName());