From: Vikram S. Adve Date: Sat, 15 Dec 2001 00:36:32 +0000 (+0000) Subject: Eliminate all uses of memInst->getIndicesBROKEN(). X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=fa24897f9f7b533a451baad86ab7e473c8d534e9;p=oota-llvm.git Eliminate all uses of memInst->getIndicesBROKEN(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1485 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/InstrSelectionSupport.h b/include/llvm/CodeGen/InstrSelectionSupport.h index 90b3af713dc..2cce1dc7542 100644 --- a/include/llvm/CodeGen/InstrSelectionSupport.h +++ b/include/llvm/CodeGen/InstrSelectionSupport.h @@ -54,7 +54,7 @@ int64_t GetConstantValueAsSignedInt (const Value *V, //--------------------------------------------------------------------------- Value* FoldGetElemChain (const InstructionNode* getElemInstrNode, - vector& chainIdxVec); + vector& chainIdxVec); //------------------------------------------------------------------------ diff --git a/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp b/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp index 468bd8f5b6e..30d9c7eb78a 100644 --- a/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp +++ b/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp @@ -111,14 +111,14 @@ GetConstantValueAsSignedInt(const Value *V, Value* FoldGetElemChain(const InstructionNode* getElemInstrNode, - vector& chainIdxVec) + vector& chainIdxVec) { MemAccessInst* getElemInst = (MemAccessInst*) getElemInstrNode->getInstruction(); // Initialize return values from the incoming instruction Value* ptrVal = getElemInst->getPointerOperand(); - chainIdxVec = getElemInst->getIndicesBROKEN(); // copies index vector values + chainIdxVec = getElemInst->copyIndices(); // Now chase the chain of getElementInstr instructions, if any InstrTreeNode* ptrChild = getElemInstrNode->leftChild(); @@ -128,7 +128,7 @@ FoldGetElemChain(const InstructionNode* getElemInstrNode, // Child is a GetElemPtr instruction getElemInst = (MemAccessInst*) ((InstructionNode*) ptrChild)->getInstruction(); - const vector& idxVec = getElemInst->getIndicesBROKEN(); + const vector& idxVec = getElemInst->copyIndices(); // Get the pointer value out of ptrChild and *prepend* its index vector ptrVal = getElemInst->getPointerOperand(); diff --git a/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp b/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp index 468bd8f5b6e..30d9c7eb78a 100644 --- a/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp +++ b/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp @@ -111,14 +111,14 @@ GetConstantValueAsSignedInt(const Value *V, Value* FoldGetElemChain(const InstructionNode* getElemInstrNode, - vector& chainIdxVec) + vector& chainIdxVec) { MemAccessInst* getElemInst = (MemAccessInst*) getElemInstrNode->getInstruction(); // Initialize return values from the incoming instruction Value* ptrVal = getElemInst->getPointerOperand(); - chainIdxVec = getElemInst->getIndicesBROKEN(); // copies index vector values + chainIdxVec = getElemInst->copyIndices(); // Now chase the chain of getElementInstr instructions, if any InstrTreeNode* ptrChild = getElemInstrNode->leftChild(); @@ -128,7 +128,7 @@ FoldGetElemChain(const InstructionNode* getElemInstrNode, // Child is a GetElemPtr instruction getElemInst = (MemAccessInst*) ((InstructionNode*) ptrChild)->getInstruction(); - const vector& idxVec = getElemInst->getIndicesBROKEN(); + const vector& idxVec = getElemInst->copyIndices(); // Get the pointer value out of ptrChild and *prepend* its index vector ptrVal = getElemInst->getPointerOperand(); diff --git a/lib/Target/SparcV9/SparcV9InstrSelection.cpp b/lib/Target/SparcV9/SparcV9InstrSelection.cpp index 21212199a86..c4fe7356727 100644 --- a/lib/Target/SparcV9/SparcV9InstrSelection.cpp +++ b/lib/Target/SparcV9/SparcV9InstrSelection.cpp @@ -34,7 +34,7 @@ static void SetMemOperands_Internal (MachineInstr* minstr, const InstructionNode* vmInstrNode, Value* ptrVal, Value* arrayOffsetVal, - const vector& idxVec, + const vector& idxVec, const TargetMachine& target); @@ -742,9 +742,7 @@ SetOperandsForMemInstr(MachineInstr* minstr, // The major work here is to extract these for all 3 instruction types // and then call the common function SetMemOperands_Internal(). // - const vector OLDIDXVEC = memInst->getIndicesBROKEN(); - const vector* idxVec = &OLDIDXVEC; //FIXME - vector* newIdxVec = NULL; + vector idxVec; Value* ptrVal; Value* arrayOffsetVal = NULL; @@ -765,12 +763,8 @@ SetOperandsForMemInstr(MachineInstr* minstr, // instruction into one single index vector. // Finally, we never fold for an array instruction so make that NULL. - newIdxVec = new vector; - ptrVal = FoldGetElemChain((InstructionNode*) ptrChild, *newIdxVec); - - newIdxVec->insert(newIdxVec->end(), idxVec->begin(), idxVec->end()); - idxVec = newIdxVec; - + ptrVal = FoldGetElemChain((InstructionNode*) ptrChild, idxVec); + idxVec.insert(idxVec.end(), memInst->idx_begin(), memInst->idx_end()); assert(!((PointerType*)ptrVal->getType())->getElementType()->isArrayType() && "GetElemPtr cannot be folded into array refs in selection"); } @@ -778,7 +772,8 @@ SetOperandsForMemInstr(MachineInstr* minstr, { // There is no GetElemPtr instruction. // Use the pointer value and the index vector from the Mem instruction. - // If it is an array reference, get the array offset value. + // If it is an array reference, check that it has been lowered to + // at most a single offset, then get the array offset value. // ptrVal = memInst->getPointerOperand(); @@ -788,16 +783,12 @@ SetOperandsForMemInstr(MachineInstr* minstr, assert((memInst->getNumOperands() == (unsigned) 1 + memInst->getFirstIndexOperandNumber()) && "Array refs must be lowered before Instruction Selection"); - - arrayOffsetVal = memInst->getOperand(memInst->getFirstIndexOperandNumber()); + arrayOffsetVal = * memInst->idx_begin(); } } SetMemOperands_Internal(minstr, vmInstrNode, ptrVal, arrayOffsetVal, - *idxVec, target); - - if (newIdxVec != NULL) - delete newIdxVec; + idxVec, target); } @@ -806,7 +797,7 @@ SetMemOperands_Internal(MachineInstr* minstr, const InstructionNode* vmInstrNode, Value* ptrVal, Value* arrayOffsetVal, - const vector& idxVec, + const vector& idxVec, const TargetMachine& target) { MemAccessInst* memInst = (MemAccessInst*) vmInstrNode->getInstruction();