diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp index 92811ada5a9..579041991b9 100644 --- a/lib/Bytecode/Writer/Writer.cpp +++ b/lib/Bytecode/Writer/Writer.cpp @@ -338,7 +338,7 @@ void BytecodeWriter::outputConstant(const Constant *CPV) { const ConstantArray *CPA = cast(CPV); assert(!CPA->isString() && "Constant strings should be handled specially!"); - for (unsigned i = 0; i != CPA->getNumOperands(); ++i) { + for (unsigned i = 0, e = CPA->getNumOperands(); i != e; ++i) { int Slot = Table.getSlot(CPA->getOperand(i)); assert(Slot != -1 && "Constant used but not available!!"); output_vbr((unsigned)Slot); @@ -348,10 +348,9 @@ void BytecodeWriter::outputConstant(const Constant *CPV) { case Type::StructTyID: { const ConstantStruct *CPS = cast(CPV); - const std::vector &Vals = CPS->getValues(); - for (unsigned i = 0; i < Vals.size(); ++i) { - int Slot = Table.getSlot(Vals[i]); + for (unsigned i = 0, e = CPS->getNumOperands(); i != e; ++i) { + int Slot = Table.getSlot(CPS->getOperand(i)); assert(Slot != -1 && "Constant used but not available!!"); output_vbr((unsigned)Slot); } diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index e6f096f8aad..b768930099e 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -446,11 +446,10 @@ void ExecutionEngine::InitializeMemory(const Constant *Init, void *Addr) { switch (Init->getType()->getTypeID()) { case Type::ArrayTyID: { const ConstantArray *CPA = cast(Init); - const std::vector &Val = CPA->getValues(); unsigned ElementSize = getTargetData().getTypeSize(cast(CPA->getType())->getElementType()); - for (unsigned i = 0; i < Val.size(); ++i) - InitializeMemory(cast(Val[i].get()), (char*)Addr+i*ElementSize); + for (unsigned i = 0, e = CPA->getNumOperands(); i != e; ++i) + InitializeMemory(CPA->getOperand(i), (char*)Addr+i*ElementSize); return; } @@ -458,10 +457,8 @@ void ExecutionEngine::InitializeMemory(const Constant *Init, void *Addr) { const ConstantStruct *CPS = cast(Init); const StructLayout *SL = getTargetData().getStructLayout(cast(CPS->getType())); - const std::vector &Val = CPS->getValues(); - for (unsigned i = 0; i < Val.size(); ++i) - InitializeMemory(cast(Val[i].get()), - (char*)Addr+SL->MemberOffsets[i]); + for (unsigned i = 0, e = CPS->getNumOperands(); i != e; ++i) + InitializeMemory(CPS->getOperand(i), (char*)Addr+SL->MemberOffsets[i]); return; } diff --git a/lib/Target/SparcV9/SparcV9AsmPrinter.cpp b/lib/Target/SparcV9/SparcV9AsmPrinter.cpp index addcbdcc0c1..0be404d6539 100644 --- a/lib/Target/SparcV9/SparcV9AsmPrinter.cpp +++ b/lib/Target/SparcV9/SparcV9AsmPrinter.cpp @@ -365,23 +365,21 @@ void AsmPrinter::printConstantValueOnly(const Constant* CV, toAsm << "\t" << ".ascii" << "\t" << getAsCString(CVA) << "\n"; } else { // Not a string. Print the values in successive locations - const std::vector &constValues = CVA->getValues(); - for (unsigned i=0; i < constValues.size(); i++) - printConstantValueOnly(cast(constValues[i].get())); + for (unsigned i = 0, e = CVA->getNumOperands(); i != e; ++i) + printConstantValueOnly(CVA->getOperand(i)); } } else if (const ConstantStruct *CVS = dyn_cast(CV)) { // Print the fields in successive locations. Pad to align if needed! const StructLayout *cvsLayout = Target.getTargetData().getStructLayout(CVS->getType()); - const std::vector& constValues = CVS->getValues(); unsigned sizeSoFar = 0; - for (unsigned i=0, N = constValues.size(); i < N; i++) { - const Constant* field = cast(constValues[i].get()); + for (unsigned i = 0, e = CVS->getNumOperands(); i != e; ++i) { + const Constant* field = CVS->getOperand(i); // Check if padding is needed and insert one or more 0s. unsigned fieldSize = Target.getTargetData().getTypeSize(field->getType()); - int padSize = ((i == N-1? cvsLayout->StructSize + int padSize = ((i == e-1? cvsLayout->StructSize : cvsLayout->MemberOffsets[i+1]) - cvsLayout->MemberOffsets[i]) - fieldSize; sizeSoFar += (fieldSize + padSize); diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp index 5bc4a488891..f8c582fe799 100644 --- a/lib/Target/X86/X86AsmPrinter.cpp +++ b/lib/Target/X86/X86AsmPrinter.cpp @@ -270,22 +270,20 @@ void X86AsmPrinter::emitGlobalConstant(const Constant *CV) { printAsCString(O, CVA); O << "\n"; } else { // Not a string. Print the values in successive locations - const std::vector &constValues = CVA->getValues(); - for (unsigned i=0; i < constValues.size(); i++) - emitGlobalConstant(cast(constValues[i].get())); + for (unsigned i = 0, e = CVA->getNumOperands(); i != e; ++i) + emitGlobalConstant(CVA->getOperand(i)); } return; } else if (const ConstantStruct *CVS = dyn_cast(CV)) { // Print the fields in successive locations. Pad to align if needed! const StructLayout *cvsLayout = TD.getStructLayout(CVS->getType()); - const std::vector& constValues = CVS->getValues(); unsigned sizeSoFar = 0; - for (unsigned i=0, N = constValues.size(); i < N; i++) { - const Constant* field = cast(constValues[i].get()); + for (unsigned i = 0, e = CVS->getNumOperands(); i != e; ++i) { + const Constant* field = CVS->getOperand(i); // Check if padding is needed and insert one or more 0s. unsigned fieldSize = TD.getTypeSize(field->getType()); - unsigned padSize = ((i == N-1? cvsLayout->StructSize + unsigned padSize = ((i == e-1? cvsLayout->StructSize : cvsLayout->MemberOffsets[i+1]) - cvsLayout->MemberOffsets[i]) - fieldSize; sizeSoFar += fieldSize + padSize; diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index 747abc2f5bb..eb4f1e31a6a 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -2947,7 +2947,7 @@ static Constant *GetGEPGlobalInitializer(Constant *C, ConstantExpr *CE) { assert(CU->getValue() < STy->getNumElements() && "Struct index out of range!"); if (ConstantStruct *CS = dyn_cast(C)) { - C = cast(CS->getValues()[CU->getValue()]); + C = CS->getOperand(CU->getValue()); } else if (isa(C)) { C = Constant::getNullValue(STy->getElementType(CU->getValue())); } else { @@ -2957,7 +2957,7 @@ static Constant *GetGEPGlobalInitializer(Constant *C, ConstantExpr *CE) { const ArrayType *ATy = cast(*I); if ((uint64_t)CI->getRawValue() >= ATy->getNumElements()) return 0; if (ConstantArray *CA = dyn_cast(C)) - C = cast(CA->getValues()[CI->getRawValue()]); + C = CA->getOperand(CI->getRawValue()); else if (isa(C)) C = Constant::getNullValue(ATy->getElementType()); else diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index 3557cadd402..1c39160d9bd 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -753,13 +753,13 @@ static Constant *GetGEPGlobalInitializer(Constant *C, ConstantExpr *CE) { if (ConstantUInt *CU = dyn_cast(CE->getOperand(i))) { ConstantStruct *CS = dyn_cast(C); if (CS == 0) return 0; - if (CU->getValue() >= CS->getValues().size()) return 0; - C = cast(CS->getValues()[CU->getValue()]); + if (CU->getValue() >= CS->getNumOperands()) return 0; + C = CS->getOperand(CU->getValue()); } else if (ConstantSInt *CS = dyn_cast(CE->getOperand(i))) { ConstantArray *CA = dyn_cast(C); if (CA == 0) return 0; - if ((uint64_t)CS->getValue() >= CA->getValues().size()) return 0; - C = cast(CA->getValues()[CS->getValue()]); + if ((uint64_t)CS->getValue() >= CA->getNumOperands()) return 0; + C = CA->getOperand(CS->getValue()); } else return 0; return C; diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index 94e56b73a53..72ce4ae81f3 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/lib/Transforms/Utils/ValueMapper.cpp @@ -34,40 +34,38 @@ Value *llvm::MapValue(const Value *V, std::map &VM) { isa(C) || isa(C)) return VMSlot = C; // Primitive constants map directly else if (ConstantArray *CA = dyn_cast(C)) { - const std::vector &Vals = CA->getValues(); - for (unsigned i = 0, e = Vals.size(); i != e; ++i) { - Value *MV = MapValue(Vals[i], VM); - if (MV != Vals[i]) { + for (unsigned i = 0, e = CA->getNumOperands(); i != e; ++i) { + Value *MV = MapValue(CA->getOperand(i), VM); + if (MV != CA->getOperand(i)) { // This array must contain a reference to a global, make a new array // and return it. // std::vector Values; - Values.reserve(Vals.size()); + Values.reserve(CA->getNumOperands()); for (unsigned j = 0; j != i; ++j) - Values.push_back(cast(Vals[j])); + Values.push_back(CA->getOperand(j)); Values.push_back(cast(MV)); for (++i; i != e; ++i) - Values.push_back(cast(MapValue(Vals[i], VM))); + Values.push_back(cast(MapValue(CA->getOperand(i), VM))); return VMSlot = ConstantArray::get(CA->getType(), Values); } } return VMSlot = C; } else if (ConstantStruct *CS = dyn_cast(C)) { - const std::vector &Vals = CS->getValues(); - for (unsigned i = 0, e = Vals.size(); i != e; ++i) { - Value *MV = MapValue(Vals[i], VM); - if (MV != Vals[i]) { + for (unsigned i = 0, e = CS->getNumOperands(); i != e; ++i) { + Value *MV = MapValue(CS->getOperand(i), VM); + if (MV != CS->getOperand(i)) { // This struct must contain a reference to a global, make a new struct // and return it. // std::vector Values; - Values.reserve(Vals.size()); + Values.reserve(CS->getNumOperands()); for (unsigned j = 0; j != i; ++j) - Values.push_back(cast(Vals[j])); + Values.push_back(CS->getOperand(j)); Values.push_back(cast(MV)); for (++i; i != e; ++i) - Values.push_back(cast(MapValue(Vals[i], VM))); + Values.push_back(cast(MapValue(CS->getOperand(i), VM))); return VMSlot = ConstantStruct::get(CS->getType(), Values); } }