Remove target specific method from MemAccessInst class

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@382 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2001-08-27 15:51:43 +00:00
parent e3860e5be5
commit b5d2f1db8c

View File

@ -44,46 +44,6 @@ const Type* MemAccessInst::getIndexedType(const Type *Ptr,
}
}
unsigned int
MemAccessInst::getIndexedOfsetForTarget(const Type *Ptr,
const vector<ConstPoolVal*> &Idx,
const TargetMachine& targetMachine)
{
if (!Ptr->isPointerType())
return 0; // Type isn't a pointer type!
unsigned int curOffset = 0;
// Get the type pointed to...
Ptr = ((const PointerType*) Ptr)->getValueType();
if (Ptr->isStructType()) {
unsigned CurIDX = 0; // which element of Idx vector
while (Ptr->isStructType()) {
const StructType * SPtr = (StructType *) Ptr;
if (Idx.size() == CurIDX)
break;
assert (Idx[CurIDX]->getType() == Type::UByteTy && "Illegal struct idx");
unsigned NextIdx = ((ConstPoolUInt*)Idx[CurIDX++])->getValue();
// add the offset for the current element
curOffset += SPtr->getElementOffset(NextIdx, targetMachine);
// and update Ptr to refer to current element
Ptr = SPtr->getElementTypes()[NextIdx];
}
return curOffset;
} else if (Ptr->isArrayType()) {
assert(0 && "Loading from arrays not implemented yet!");
} else {
assert (Idx.size() == 0 && "Indexing type that is not struct or array?");
return 0; // Load directly through ptr
}
}
//===----------------------------------------------------------------------===//
// LoadInst Implementation
//===----------------------------------------------------------------------===//