diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h index 2e69243adbe..9393ec4953e 100644 --- a/include/llvm/Instructions.h +++ b/include/llvm/Instructions.h @@ -1590,10 +1590,8 @@ public: } static const Type *getIndexedType(const Type *Ptr, unsigned Idx); - inline op_iterator idx_begin() { return op_begin()+1; } - inline const_op_iterator idx_begin() const { return op_begin()+1; } - inline op_iterator idx_end() { return op_end(); } - inline const_op_iterator idx_end() const { return op_end(); } + inline const unsigned *idx_begin() const { return Indices.begin(); } + inline const unsigned *idx_end() const { return Indices.end(); } Value *getAggregateOperand() { return getOperand(0); @@ -1606,11 +1604,11 @@ public: } unsigned getNumIndices() const { // Note: always non-negative - return getNumOperands() - 1; + return Indices.size(); } bool hasIndices() const { - return getNumOperands() > 1; + return true; } // Methods for support type inquiry through isa, cast, and dyn_cast: @@ -1762,10 +1760,8 @@ public: return reinterpret_cast(Instruction::getType()); } - inline unsigned *idx_begin() { return Indices.begin(); } - inline const unsigned *idx_begin() const { return Indices.begin(); } - inline unsigned *idx_end() { return Indices.end(); } - inline const unsigned *idx_end() const { return Indices.end(); } + inline const unsigned *idx_begin() const { return Indices.begin(); } + inline const unsigned *idx_end() const { return Indices.end(); } Value *getAggregateOperand() { return getOperand(0); @@ -1788,11 +1784,11 @@ public: } unsigned getNumIndices() const { // Note: always non-negative - return getNumOperands() - 2; + return Indices.size(); } bool hasIndices() const { - return getNumOperands() > 2; + return true; } // Methods for support type inquiry through isa, cast, and dyn_cast: diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index e15e68a73d5..9c10e75c8df 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -551,7 +551,7 @@ public: Op<0>() = Agg; } - /// Indicies - These identify which value to extract. + /// Indices - These identify which value to extract. const SmallVector Indices; /// Transparently provide more efficient getOperand methods. @@ -577,7 +577,7 @@ public: Op<1>() = Val; } - /// Indicies - These identify the position for the insertion. + /// Indices - These identify the position for the insertion. const SmallVector Indices; /// Transparently provide more efficient getOperand methods. @@ -2339,7 +2339,7 @@ Constant *ConstantExpr::getExtractValueTy(const Type *ReqTy, Constant *Agg, // Look up the constant in the table first to ensure uniqueness std::vector ArgVec; ArgVec.push_back(Agg); - SmallVector Indices; + SmallVector Indices(Idxs, Idxs + NumIdx); const ExprMapKeyType Key(Instruction::ExtractValue, ArgVec, 0, Indices); return ExprConstants->getOrCreate(ReqTy, Key); }