- Change getelementptr instruction to use long indexes instead of uint

indexes for sequential types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3683 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2002-09-11 01:21:35 +00:00
parent 3cac88ac9e
commit 0374b8de2b
2 changed files with 3 additions and 14 deletions

View File

@ -822,7 +822,7 @@ static GenericValue executeGEPOperation(Value *Ptr, User::op_iterator I,
} else if (const SequentialType *ST = cast<SequentialType>(Ty)) {
// Get the index number for the array... which must be uint type...
assert((*I)->getType() == Type::UIntTy);
assert((*I)->getType() == Type::LongTy);
unsigned Idx = getOperandValue(*I, SF).UIntVal;
if (const ArrayType *AT = dyn_cast<ArrayType>(ST))
if (Idx >= AT->getNumElements() && ArrayChecksEnabled) {

View File

@ -24,9 +24,6 @@
#include <math.h>
using std::vector;
//************************* Forward Declarations ***************************/
//************************ Internal Functions ******************************/
@ -937,15 +934,6 @@ CreateCodeForFixedSizeAlloca(const TargetMachine& target,
}
// Check for a constant (uint) 0.
inline bool
IsZero(Value* idx)
{
return (isa<ConstantInt>(idx) && cast<ConstantInt>(idx)->isNullValue());
}
//------------------------------------------------------------------------
// Function SetOperandsForMemInstr
//
@ -1004,7 +992,8 @@ SetOperandsForMemInstr(vector<MachineInstr*>& mvec,
// offset. (An extra leading zero offset, if any, can be ignored.)
// Generate code sequence to compute address from index.
//
bool firstIdxIsZero = IsZero(idxVec[0]);
bool firstIdxIsZero =
(idxVec[0] == Constant::getNullValue(idxVec[0]->getType()));
assert(idxVec.size() == 1U + firstIdxIsZero
&& "Array refs must be lowered before Instruction Selection");