diff options
| author | Jay Foad <jay.foad@gmail.com> | 2011-07-19 14:01:37 +0000 | 
|---|---|---|
| committer | Jay Foad <jay.foad@gmail.com> | 2011-07-19 14:01:37 +0000 | 
| commit | 8fbbb3980755d74539a0aed02bc18842ed2bd18d (patch) | |
| tree | 2fc3d8aa307866ae8c2e2ca38d196c87caa7a435 /lib | |
| parent | 1d2f569c3428d70d0cf690c9adb459ad4a3ecff2 (diff) | |
| download | external_llvm-8fbbb3980755d74539a0aed02bc18842ed2bd18d.zip external_llvm-8fbbb3980755d74539a0aed02bc18842ed2bd18d.tar.gz external_llvm-8fbbb3980755d74539a0aed02bc18842ed2bd18d.tar.bz2  | |
Convert TargetData::getIndexedOffset to use ArrayRef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135478 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Analysis/ConstantFolding.cpp | 12 | ||||
| -rw-r--r-- | lib/Analysis/Loads.cpp | 2 | ||||
| -rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 3 | ||||
| -rw-r--r-- | lib/CodeGen/ELFWriter.cpp | 3 | ||||
| -rw-r--r-- | lib/ExecutionEngine/ExecutionEngine.cpp | 3 | ||||
| -rw-r--r-- | lib/Target/TargetData.cpp | 9 | ||||
| -rw-r--r-- | lib/Transforms/IPO/MergeFunctions.cpp | 4 | ||||
| -rw-r--r-- | lib/Transforms/InstCombine/InstCombineCalls.cpp | 3 | ||||
| -rw-r--r-- | lib/Transforms/Scalar/ScalarReplAggregates.cpp | 10 | 
9 files changed, 21 insertions, 28 deletions
diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp index 4af2cec..b60432b 100644 --- a/lib/Analysis/ConstantFolding.cpp +++ b/lib/Analysis/ConstantFolding.cpp @@ -606,10 +606,10 @@ static Constant *SymbolicallyEvaluateGEP(ArrayRef<Constant *> Ops,      }    unsigned BitWidth = TD->getTypeSizeInBits(IntPtrTy); -  APInt Offset = APInt(BitWidth, -                       TD->getIndexedOffset(Ptr->getType(), -                                            (Value**)Ops.data() + 1, -                                            Ops.size() - 1)); +  APInt Offset = +    APInt(BitWidth, TD->getIndexedOffset(Ptr->getType(), +                                         makeArrayRef((Value **)Ops.data() + 1, +                                                      Ops.size() - 1)));    Ptr = cast<Constant>(Ptr->stripPointerCasts());    // If this is a GEP of a GEP, fold it all into a single GEP. @@ -628,9 +628,7 @@ static Constant *SymbolicallyEvaluateGEP(ArrayRef<Constant *> Ops,      Ptr = cast<Constant>(GEP->getOperand(0));      Offset += APInt(BitWidth, -                    TD->getIndexedOffset(Ptr->getType(), -                                         (Value**)NestedOps.data(), -                                         NestedOps.size())); +                    TD->getIndexedOffset(Ptr->getType(), NestedOps));      Ptr = cast<Constant>(Ptr->stripPointerCasts());    } diff --git a/lib/Analysis/Loads.cpp b/lib/Analysis/Loads.cpp index 1f554a3..18f3a34 100644 --- a/lib/Analysis/Loads.cpp +++ b/lib/Analysis/Loads.cpp @@ -63,7 +63,7 @@ static Value *getUnderlyingObjectWithOffset(Value *V, const TargetData *TD,          return V;        SmallVector<Value*, 8> Indices(GEP->op_begin() + 1, GEP->op_end());        ByteOffset += TD->getIndexedOffset(GEP->getPointerOperandType(), -                                         &Indices[0], Indices.size()); +                                         Indices);        V = GEP->getPointerOperand();      } else if (Operator::getOpcode(V) == Instruction::BitCast) {        V = cast<Operator>(V)->getOperand(0); diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 7575f35..6857bce 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -1409,8 +1409,7 @@ static const MCExpr *LowerConstant(const Constant *CV, AsmPrinter &AP) {      // Generate a symbolic expression for the byte address      const Constant *PtrVal = CE->getOperand(0);      SmallVector<Value*, 8> IdxVec(CE->op_begin()+1, CE->op_end()); -    int64_t Offset = TD.getIndexedOffset(PtrVal->getType(), &IdxVec[0], -                                         IdxVec.size()); +    int64_t Offset = TD.getIndexedOffset(PtrVal->getType(), IdxVec);      const MCExpr *Base = LowerConstant(CE->getOperand(0), AP);      if (Offset == 0) diff --git a/lib/CodeGen/ELFWriter.cpp b/lib/CodeGen/ELFWriter.cpp index 474b1c7..41efe4e 100644 --- a/lib/CodeGen/ELFWriter.cpp +++ b/lib/CodeGen/ELFWriter.cpp @@ -542,8 +542,7 @@ CstExprResTy ELFWriter::ResolveConstantExpr(const Constant *CV) {    case Instruction::GetElementPtr: {      const Constant *ptrVal = CE->getOperand(0);      SmallVector<Value*, 8> idxVec(CE->op_begin()+1, CE->op_end()); -    int64_t Offset = TD->getIndexedOffset(ptrVal->getType(), &idxVec[0], -                                          idxVec.size()); +    int64_t Offset = TD->getIndexedOffset(ptrVal->getType(), idxVec);      return std::make_pair(ptrVal, Offset);    }    case Instruction::IntToPtr: { diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index 4995fa9..8f5e190 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -549,8 +549,7 @@ GenericValue ExecutionEngine::getConstantValue(const Constant *C) {        // Compute the index        GenericValue Result = getConstantValue(Op0);        SmallVector<Value*, 8> Indices(CE->op_begin()+1, CE->op_end()); -      uint64_t Offset = -        TD->getIndexedOffset(Op0->getType(), &Indices[0], Indices.size()); +      uint64_t Offset = TD->getIndexedOffset(Op0->getType(), Indices);        char* tmp = (char*) Result.PointerVal;        Result = PTOGV(tmp + Offset); diff --git a/lib/Target/TargetData.cpp b/lib/Target/TargetData.cpp index 4e95aba..5ef932f 100644 --- a/lib/Target/TargetData.cpp +++ b/lib/Target/TargetData.cpp @@ -521,15 +521,16 @@ IntegerType *TargetData::getIntPtrType(LLVMContext &C) const {  } -uint64_t TargetData::getIndexedOffset(Type *ptrTy, Value* const* Indices, -                                      unsigned NumIndices) const { +uint64_t TargetData::getIndexedOffset(Type *ptrTy, +                                      ArrayRef<Value *> Indices) const {    Type *Ty = ptrTy;    assert(Ty->isPointerTy() && "Illegal argument for getIndexedOffset()");    uint64_t Result = 0;    generic_gep_type_iterator<Value* const*> -    TI = gep_type_begin(ptrTy, Indices, Indices+NumIndices); -  for (unsigned CurIDX = 0; CurIDX != NumIndices; ++CurIDX, ++TI) { +    TI = gep_type_begin(ptrTy, Indices.begin(), Indices.end()); +  for (unsigned CurIDX = 0, EndIDX = Indices.size(); CurIDX != EndIDX; +       ++CurIDX, ++TI) {      if (StructType *STy = dyn_cast<StructType>(*TI)) {        assert(Indices[CurIDX]->getType() ==               Type::getInt32Ty(ptrTy->getContext()) && diff --git a/lib/Transforms/IPO/MergeFunctions.cpp b/lib/Transforms/IPO/MergeFunctions.cpp index bba3067..f3d7e46 100644 --- a/lib/Transforms/IPO/MergeFunctions.cpp +++ b/lib/Transforms/IPO/MergeFunctions.cpp @@ -346,9 +346,9 @@ bool FunctionComparator::isEquivalentGEP(const GEPOperator *GEP1,      SmallVector<Value *, 8> Indices1(GEP1->idx_begin(), GEP1->idx_end());      SmallVector<Value *, 8> Indices2(GEP2->idx_begin(), GEP2->idx_end());      uint64_t Offset1 = TD->getIndexedOffset(GEP1->getPointerOperandType(), -                                            Indices1.data(), Indices1.size()); +                                            Indices1);      uint64_t Offset2 = TD->getIndexedOffset(GEP2->getPointerOperandType(), -                                            Indices2.data(), Indices2.size()); +                                            Indices2);      return Offset1 == Offset2;    } diff --git a/lib/Transforms/InstCombine/InstCombineCalls.cpp b/lib/Transforms/InstCombine/InstCombineCalls.cpp index 1209647..c33dec1 100644 --- a/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -266,8 +266,7 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {        // Get the current byte offset into the thing. Use the original        // operand in case we're looking through a bitcast.        SmallVector<Value*, 8> Ops(GEP->idx_begin(), GEP->idx_end()); -      Offset = TD->getIndexedOffset(GEP->getPointerOperandType(), -                                    Ops.data(), Ops.size()); +      Offset = TD->getIndexedOffset(GEP->getPointerOperandType(), Ops);        Op1 = GEP->getPointerOperand()->stripPointerCasts(); diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp index 9b704f6..fbf3092 100644 --- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp +++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp @@ -516,7 +516,7 @@ bool ConvertToScalarInfo::CanConvertToScalar(Value *V, uint64_t Offset) {        // Compute the offset that this GEP adds to the pointer.        SmallVector<Value*, 8> Indices(GEP->op_begin()+1, GEP->op_end());        uint64_t GEPOffset = TD.getIndexedOffset(GEP->getPointerOperandType(), -                                               &Indices[0], Indices.size()); +                                               Indices);        // See if all uses can be converted.        if (!CanConvertToScalar(GEP, Offset+GEPOffset))          return false; @@ -589,7 +589,7 @@ void ConvertToScalarInfo::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI,        // Compute the offset that this GEP adds to the pointer.        SmallVector<Value*, 8> Indices(GEP->op_begin()+1, GEP->op_end());        uint64_t GEPOffset = TD.getIndexedOffset(GEP->getPointerOperandType(), -                                               &Indices[0], Indices.size()); +                                               Indices);        ConvertUsesToScalar(GEP, NewAI, Offset+GEPOffset*8);        GEP->eraseFromParent();        continue; @@ -1776,8 +1776,7 @@ void SROA::isSafeGEP(GetElementPtrInst *GEPI,    // Compute the offset due to this GEP and check if the alloca has a    // component element at that offset.    SmallVector<Value*, 8> Indices(GEPI->op_begin() + 1, GEPI->op_end()); -  Offset += TD->getIndexedOffset(GEPI->getPointerOperandType(), -                                 &Indices[0], Indices.size()); +  Offset += TD->getIndexedOffset(GEPI->getPointerOperandType(), Indices);    if (!TypeHasComponent(Info.AI->getAllocatedType(), Offset, 0))      MarkUnsafe(Info, GEPI);  } @@ -2053,8 +2052,7 @@ void SROA::RewriteGEP(GetElementPtrInst *GEPI, AllocaInst *AI, uint64_t Offset,                        SmallVector<AllocaInst*, 32> &NewElts) {    uint64_t OldOffset = Offset;    SmallVector<Value*, 8> Indices(GEPI->op_begin() + 1, GEPI->op_end()); -  Offset += TD->getIndexedOffset(GEPI->getPointerOperandType(), -                                 &Indices[0], Indices.size()); +  Offset += TD->getIndexedOffset(GEPI->getPointerOperandType(), Indices);    RewriteForScalarRepl(GEPI, AI, Offset, NewElts);  | 
