mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-19 19:29:31 +00:00
Change code to not use the copyOperands method added to User. It's now
more efficient to boot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3453 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dc58535b37
commit
abfb0b5e70
@ -191,19 +191,21 @@ public:
|
||||
//
|
||||
std::string ConstantExprToString(const ConstantExpr* CE,
|
||||
const TargetMachine& target) {
|
||||
std::string S("");
|
||||
std::string S;
|
||||
|
||||
switch(CE->getOpcode()) {
|
||||
case Instruction::GetElementPtr:
|
||||
{
|
||||
const Value* ptrVal = CE->getOperand(0);
|
||||
valToExprString(ptrVal, target, S);
|
||||
std::vector<Value*> idxVec = CE->copyOperands();
|
||||
idxVec.erase(idxVec.begin());
|
||||
uint64_t byteOffset = target.DataLayout.getIndexedOffset(ptrVal->getType(),
|
||||
idxVec);
|
||||
uint64_t eltSize = target.DataLayout.getTypeSize(
|
||||
cast<PointerType>(ptrVal->getType())->getElementType());
|
||||
std::vector<Value*> idxVec(CE->op_begin()+1, CE->op_end());
|
||||
uint64_t byteOffset =
|
||||
target.DataLayout.getIndexedOffset(ptrVal->getType(), idxVec);
|
||||
|
||||
const Type *PtrElTy =
|
||||
cast<PointerType>(ptrVal->getType())->getElementType();
|
||||
uint64_t eltSize = target.DataLayout.getTypeSize(PtrElTy);
|
||||
|
||||
S += " + " + utostr(byteOffset / eltSize);
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user