diff options
Diffstat (limited to 'llvm/lib/IR')
| -rw-r--r-- | llvm/lib/IR/Constants.cpp | 5 | ||||
| -rw-r--r-- | llvm/lib/IR/Instructions.cpp | 17 | ||||
| -rw-r--r-- | llvm/lib/IR/User.cpp | 8 |
3 files changed, 19 insertions, 11 deletions
diff --git a/llvm/lib/IR/Constants.cpp b/llvm/lib/IR/Constants.cpp index fb83ebbbd87..76c55b6edc9 100644 --- a/llvm/lib/IR/Constants.cpp +++ b/llvm/lib/IR/Constants.cpp @@ -2389,6 +2389,7 @@ GetElementPtrConstantExpr::GetElementPtrConstantExpr( IdxList.size() + 1), SrcElementTy(SrcElementTy) { Op<0>() = C; + Use *OperandList = getOperandList(); for (unsigned i = 0, E = IdxList.size(); i != E; ++i) OperandList[i+1] = IdxList[i]; } @@ -2851,6 +2852,7 @@ void ConstantArray::replaceUsesOfWithOnConstant(Value *From, Value *To, // Keep track of whether all the values in the array are "ToC". bool AllSame = true; + Use *OperandList = getOperandList(); for (Use *O = OperandList, *E = OperandList+getNumOperands(); O != E; ++O) { Constant *Val = cast<Constant>(O->get()); if (Val == From) { @@ -2887,6 +2889,7 @@ void ConstantStruct::replaceUsesOfWithOnConstant(Value *From, Value *To, assert(isa<Constant>(To) && "Cannot make Constant refer to non-constant!"); Constant *ToC = cast<Constant>(To); + Use *OperandList = getOperandList(); unsigned OperandToUpdate = U-OperandList; assert(getOperand(OperandToUpdate) == From && "ReplaceAllUsesWith broken!"); @@ -2955,6 +2958,7 @@ void ConstantVector::replaceUsesOfWithOnConstant(Value *From, Value *To, } // Update to the new value. + Use *OperandList = getOperandList(); if (Constant *C = getContext().pImpl->VectorConstants.replaceOperandsInPlace( Values, this, From, ToC, NumUpdated, U - OperandList)) replaceUsesOfWithOnConstantImpl(C); @@ -2983,6 +2987,7 @@ void ConstantExpr::replaceUsesOfWithOnConstant(Value *From, Value *ToV, } // Update to the new value. + Use *OperandList = getOperandList(); if (Constant *C = getContext().pImpl->ExprConstants.replaceOperandsInPlace( NewOps, this, From, To, NumUpdated, U - OperandList)) replaceUsesOfWithOnConstantImpl(C); diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index 73b966f808e..dff31bee093 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -172,7 +172,8 @@ LandingPadInst::LandingPadInst(const LandingPadInst &LP) LP.getNumOperands()), ReservedSpace(LP.getNumOperands()) { allocHungoffUses(LP.getNumOperands()); - Use *OL = OperandList, *InOL = LP.OperandList; + Use *OL = getOperandList(); + const Use *InOL = LP.getOperandList(); for (unsigned I = 0, E = ReservedSpace; I != E; ++I) OL[I] = InOL[I]; @@ -219,7 +220,7 @@ void LandingPadInst::addClause(Constant *Val) { growOperands(1); assert(OpNo < ReservedSpace && "Growing didn't work!"); ++NumOperands; - OperandList[OpNo] = Val; + getOperandList()[OpNo] = Val; } //===----------------------------------------------------------------------===// @@ -3295,7 +3296,8 @@ SwitchInst::SwitchInst(const SwitchInst &SI) : TerminatorInst(SI.getType(), Instruction::Switch, nullptr, 0) { init(SI.getCondition(), SI.getDefaultDest(), SI.getNumOperands()); NumOperands = SI.getNumOperands(); - Use *OL = OperandList, *InOL = SI.OperandList; + Use *OL = getOperandList(); + const Use *InOL = SI.getOperandList(); for (unsigned i = 2, E = SI.getNumOperands(); i != E; i += 2) { OL[i] = InOL[i]; OL[i+1] = InOL[i+1]; @@ -3327,7 +3329,7 @@ void SwitchInst::removeCase(CaseIt i) { assert(2 + idx*2 < getNumOperands() && "Case index out of range!!!"); unsigned NumOps = getNumOperands(); - Use *OL = OperandList; + Use *OL = getOperandList(); // Overwrite this case with the end of the list. if (2 + (idx + 1) * 2 != NumOps) { @@ -3407,7 +3409,8 @@ IndirectBrInst::IndirectBrInst(const IndirectBrInst &IBI) : TerminatorInst(Type::getVoidTy(IBI.getContext()), Instruction::IndirectBr, nullptr, IBI.getNumOperands()) { allocHungoffUses(IBI.getNumOperands()); - Use *OL = OperandList, *InOL = IBI.OperandList; + Use *OL = getOperandList(); + const Use *InOL = IBI.getOperandList(); for (unsigned i = 0, E = IBI.getNumOperands(); i != E; ++i) OL[i] = InOL[i]; SubclassOptionalData = IBI.SubclassOptionalData; @@ -3422,7 +3425,7 @@ void IndirectBrInst::addDestination(BasicBlock *DestBB) { // Initialize some new operands. assert(OpNo < ReservedSpace && "Growing didn't work!"); NumOperands = OpNo+1; - OperandList[OpNo] = DestBB; + getOperandList()[OpNo] = DestBB; } /// removeDestination - This method removes the specified successor from the @@ -3431,7 +3434,7 @@ void IndirectBrInst::removeDestination(unsigned idx) { assert(idx < getNumOperands()-1 && "Successor index out of range!"); unsigned NumOps = getNumOperands(); - Use *OL = OperandList; + Use *OL = getOperandList(); // Replace this value with the last one. OL[idx+1] = OL[NumOps-1]; diff --git a/llvm/lib/IR/User.cpp b/llvm/lib/IR/User.cpp index d6593520477..0cba526f318 100644 --- a/llvm/lib/IR/User.cpp +++ b/llvm/lib/IR/User.cpp @@ -49,7 +49,7 @@ void User::allocHungoffUses(unsigned N, bool IsPhi) { Use *Begin = static_cast<Use*>(::operator new(size)); Use *End = Begin + N; (void) new(End) Use::UserRef(const_cast<User*>(this), 1); - OperandList = Use::initTags(Begin, End); + setOperandList(Use::initTags(Begin, End)); // Tag this operand list as being a hung off. HasHungOffUses = true; } @@ -63,9 +63,9 @@ void User::growHungoffUses(unsigned NewNumUses, bool IsPhi) { // space to copy the old uses in to the new space. assert(NewNumUses > OldNumUses && "realloc must grow num uses"); - Use *OldOps = OperandList; + Use *OldOps = getOperandList(); allocHungoffUses(NewNumUses, IsPhi); - Use *NewOps = OperandList; + Use *NewOps = getOperandList(); // Now copy from the old operands list to the new one. std::copy(OldOps, OldOps + OldNumUses, NewOps); @@ -90,7 +90,7 @@ void *User::operator new(size_t s, unsigned Us) { Use *Start = static_cast<Use*>(Storage); Use *End = Start + Us; User *Obj = reinterpret_cast<User*>(End); - Obj->OperandList = Start; + Obj->setOperandList(Start); Obj->HasHungOffUses = false; Obj->NumOperands = Us; Use::initTags(Start, End); |

