From f18177ea01ba7032ae63fc3071fd11c68a7efb15 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 22 Aug 2002 15:57:58 +0000 Subject: [PATCH] Change code to not use the copyOperands method added to User. It's now more efficient to boot. llvm-svn: 3453 --- llvm/lib/Target/Sparc/EmitAssembly.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/llvm/lib/Target/Sparc/EmitAssembly.cpp b/llvm/lib/Target/Sparc/EmitAssembly.cpp index 680e7d20b52b..f3de79d10164 100644 --- a/llvm/lib/Target/Sparc/EmitAssembly.cpp +++ b/llvm/lib/Target/Sparc/EmitAssembly.cpp @@ -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 idxVec = CE->copyOperands(); - idxVec.erase(idxVec.begin()); - uint64_t byteOffset = target.DataLayout.getIndexedOffset(ptrVal->getType(), - idxVec); - uint64_t eltSize = target.DataLayout.getTypeSize( - cast(ptrVal->getType())->getElementType()); + std::vector idxVec(CE->op_begin()+1, CE->op_end()); + uint64_t byteOffset = + target.DataLayout.getIndexedOffset(ptrVal->getType(), idxVec); + + const Type *PtrElTy = + cast(ptrVal->getType())->getElementType(); + uint64_t eltSize = target.DataLayout.getTypeSize(PtrElTy); + S += " + " + utostr(byteOffset / eltSize); break; }