diff --git a/include/llvm/InstrTypes.h b/include/llvm/InstrTypes.h index ed7b5b4fef3..6d6d0bae29b 100644 --- a/include/llvm/InstrTypes.h +++ b/include/llvm/InstrTypes.h @@ -53,7 +53,7 @@ protected: virtual void setSuccessorV(unsigned idx, BasicBlock *B) = 0; public: - virtual TerminatorInst *clone(LLVMContext &Context) const = 0; + virtual TerminatorInst *clone() const = 0; /// getNumSuccessors - Return the number of successors that this terminator /// has. @@ -299,7 +299,7 @@ public: return static_cast(Instruction::getOpcode()); } - virtual BinaryOperator *clone(LLVMContext &Context) const; + virtual BinaryOperator *clone() const; /// swapOperands - Exchange the two operands to this instruction. /// This instruction is safe to use on any binary instruction and diff --git a/include/llvm/Instruction.h b/include/llvm/Instruction.h index 189c34a5021..fdae3d7d744 100644 --- a/include/llvm/Instruction.h +++ b/include/llvm/Instruction.h @@ -47,7 +47,7 @@ public: /// * The instruction has no parent /// * The instruction has no name /// - virtual Instruction *clone(LLVMContext &Context) const = 0; + virtual Instruction *clone() const = 0; /// isIdenticalTo - Return true if the specified instruction is exactly /// identical to the current one. This means that all operands match and any diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h index fbee2af81cf..51ea50af3bd 100644 --- a/include/llvm/Instructions.h +++ b/include/llvm/Instructions.h @@ -80,7 +80,7 @@ public: unsigned getAlignment() const { return (1u << SubclassData) >> 1; } void setAlignment(unsigned Align); - virtual AllocationInst *clone(LLVMContext &Context) const = 0; + virtual AllocationInst *clone() const = 0; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const AllocationInst *) { return true; } @@ -129,7 +129,7 @@ public: : AllocationInst(Ty, ArraySize, Malloc, Align, NameStr, InsertBefore) {} - virtual MallocInst *clone(LLVMContext &Context) const; + virtual MallocInst *clone() const; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const MallocInst *) { return true; } @@ -179,7 +179,7 @@ public: : AllocationInst(Ty, ArraySize, Alloca, Align, NameStr, InsertAtEnd) {} - virtual AllocaInst *clone(LLVMContext &Context) const; + virtual AllocaInst *clone() const; /// isStaticAlloca - Return true if this alloca is in the entry block of the /// function and is a constant size. If so, the code generator will fold it @@ -209,7 +209,7 @@ public: explicit FreeInst(Value *Ptr, Instruction *InsertBefore = 0); FreeInst(Value *Ptr, BasicBlock *InsertAfter); - virtual FreeInst *clone(LLVMContext &Context) const; + virtual FreeInst *clone() const; // Accessor methods for consistency with other memory operations Value *getPointerOperand() { return getOperand(0); } @@ -265,7 +265,7 @@ public: SubclassData = (SubclassData & ~1) | (V ? 1 : 0); } - virtual LoadInst *clone(LLVMContext &Context) const; + virtual LoadInst *clone() const; /// getAlignment - Return the alignment of the access that is being performed /// @@ -342,7 +342,7 @@ public: void setAlignment(unsigned Align); - virtual StoreInst *clone(LLVMContext &Context) const; + virtual StoreInst *clone() const; Value *getPointerOperand() { return getOperand(1); } const Value *getPointerOperand() const { return getOperand(1); } @@ -525,7 +525,7 @@ public: return GEP; } - virtual GetElementPtrInst *clone(LLVMContext &Context) const; + virtual GetElementPtrInst *clone() const; /// Transparently provide more efficient getOperand methods. DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); @@ -822,7 +822,7 @@ public: Op<0>().swap(Op<1>()); } - virtual ICmpInst *clone(LLVMContext &Context) const; + virtual ICmpInst *clone() const; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const ICmpInst *) { return true; } @@ -931,7 +931,7 @@ public: Op<0>().swap(Op<1>()); } - virtual FCmpInst *clone(LLVMContext &Context) const; + virtual FCmpInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const FCmpInst *) { return true; } @@ -1053,7 +1053,7 @@ public: SubclassData = (SubclassData & ~1) | unsigned(isTC); } - virtual CallInst *clone(LLVMContext &Context) const; + virtual CallInst *clone() const; /// Provide fast operand accessors DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); @@ -1247,7 +1247,7 @@ public: return static_cast(Instruction::getOpcode()); } - virtual SelectInst *clone(LLVMContext &Context) const; + virtual SelectInst *clone() const; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const SelectInst *) { return true; } @@ -1285,7 +1285,7 @@ public: setName(NameStr); } - virtual VAArgInst *clone(LLVMContext &Context) const; + virtual VAArgInst *clone() const; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const VAArgInst *) { return true; } @@ -1325,7 +1325,7 @@ public: /// formed with the specified operands. static bool isValidOperands(const Value *Vec, const Value *Idx); - virtual ExtractElementInst *clone(LLVMContext &Context) const; + virtual ExtractElementInst *clone() const; Value *getVectorOperand() { return Op<0>(); } Value *getIndexOperand() { return Op<1>(); } @@ -1386,7 +1386,7 @@ public: static bool isValidOperands(const Value *Vec, const Value *NewElt, const Value *Idx); - virtual InsertElementInst *clone(LLVMContext &Context) const; + virtual InsertElementInst *clone() const; /// getType - Overload to return most specific vector type. /// @@ -1437,7 +1437,7 @@ public: static bool isValidOperands(const Value *V1, const Value *V2, const Value *Mask); - virtual ShuffleVectorInst *clone(LLVMContext &Context) const; + virtual ShuffleVectorInst *clone() const; /// getType - Overload to return most specific vector type. /// @@ -1581,7 +1581,7 @@ public: return new ExtractValueInst(Agg, Idxs, Idxs + 1, NameStr, InsertAtEnd); } - virtual ExtractValueInst *clone(LLVMContext &Context) const; + virtual ExtractValueInst *clone() const; /// getIndexedType - Returns the type of the element that would be extracted /// with an extractvalue instruction with the specified parameters. @@ -1751,7 +1751,7 @@ public: return new InsertValueInst(Agg, Val, Idx, NameStr, InsertAtEnd); } - virtual InsertValueInst *clone(LLVMContext &Context) const; + virtual InsertValueInst *clone() const; /// Transparently provide more efficient getOperand methods. DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); @@ -1880,7 +1880,7 @@ public: resizeOperands(NumValues*2); } - virtual PHINode *clone(LLVMContext &Context) const; + virtual PHINode *clone() const; /// Provide fast operand accessors DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); @@ -2047,7 +2047,7 @@ public: } virtual ~ReturnInst(); - virtual ReturnInst *clone(LLVMContext &Context) const; + virtual ReturnInst *clone() const; /// Provide fast operand accessors DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); @@ -2129,7 +2129,7 @@ public: /// Transparently provide more efficient getOperand methods. DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); - virtual BranchInst *clone(LLVMContext &Context) const; + virtual BranchInst *clone() const; bool isUnconditional() const { return getNumOperands() == 1; } bool isConditional() const { return getNumOperands() == 3; } @@ -2299,7 +2299,7 @@ public: /// void removeCase(unsigned idx); - virtual SwitchInst *clone(LLVMContext &Context) const; + virtual SwitchInst *clone() const; unsigned getNumSuccessors() const { return getNumOperands()/2; } BasicBlock *getSuccessor(unsigned idx) const { @@ -2413,7 +2413,7 @@ public: Values, NameStr, InsertAtEnd); } - virtual InvokeInst *clone(LLVMContext &Context) const; + virtual InvokeInst *clone() const; /// Provide fast operand accessors DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); @@ -2603,7 +2603,7 @@ public: explicit UnwindInst(LLVMContext &C, Instruction *InsertBefore = 0); explicit UnwindInst(LLVMContext &C, BasicBlock *InsertAtEnd); - virtual UnwindInst *clone(LLVMContext &Context) const; + virtual UnwindInst *clone() const; unsigned getNumSuccessors() const { return 0; } @@ -2640,7 +2640,7 @@ public: explicit UnreachableInst(LLVMContext &C, Instruction *InsertBefore = 0); explicit UnreachableInst(LLVMContext &C, BasicBlock *InsertAtEnd); - virtual UnreachableInst *clone(LLVMContext &Context) const; + virtual UnreachableInst *clone() const; unsigned getNumSuccessors() const { return 0; } @@ -2682,7 +2682,7 @@ public: ); /// @brief Clone an identical TruncInst - virtual TruncInst *clone(LLVMContext &Context) const; + virtual TruncInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const TruncInst *) { return true; } @@ -2718,7 +2718,7 @@ public: ); /// @brief Clone an identical ZExtInst - virtual ZExtInst *clone(LLVMContext &Context) const; + virtual ZExtInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const ZExtInst *) { return true; } @@ -2754,7 +2754,7 @@ public: ); /// @brief Clone an identical SExtInst - virtual SExtInst *clone(LLVMContext &Context) const; + virtual SExtInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const SExtInst *) { return true; } @@ -2790,7 +2790,7 @@ public: ); /// @brief Clone an identical FPTruncInst - virtual FPTruncInst *clone(LLVMContext &Context) const; + virtual FPTruncInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const FPTruncInst *) { return true; } @@ -2826,7 +2826,7 @@ public: ); /// @brief Clone an identical FPExtInst - virtual FPExtInst *clone(LLVMContext &Context) const; + virtual FPExtInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const FPExtInst *) { return true; } @@ -2862,7 +2862,7 @@ public: ); /// @brief Clone an identical UIToFPInst - virtual UIToFPInst *clone(LLVMContext &Context) const; + virtual UIToFPInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const UIToFPInst *) { return true; } @@ -2898,7 +2898,7 @@ public: ); /// @brief Clone an identical SIToFPInst - virtual SIToFPInst *clone(LLVMContext &Context) const; + virtual SIToFPInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const SIToFPInst *) { return true; } @@ -2934,7 +2934,7 @@ public: ); /// @brief Clone an identical FPToUIInst - virtual FPToUIInst *clone(LLVMContext &Context) const; + virtual FPToUIInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const FPToUIInst *) { return true; } @@ -2970,7 +2970,7 @@ public: ); /// @brief Clone an identical FPToSIInst - virtual FPToSIInst *clone(LLVMContext &Context) const; + virtual FPToSIInst *clone() const; /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const FPToSIInst *) { return true; } @@ -3006,7 +3006,7 @@ public: ); /// @brief Clone an identical IntToPtrInst - virtual IntToPtrInst *clone(LLVMContext &Context) const; + virtual IntToPtrInst *clone() const; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const IntToPtrInst *) { return true; } @@ -3042,7 +3042,7 @@ public: ); /// @brief Clone an identical PtrToIntInst - virtual PtrToIntInst *clone(LLVMContext &Context) const; + virtual PtrToIntInst *clone() const; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const PtrToIntInst *) { return true; } @@ -3078,7 +3078,7 @@ public: ); /// @brief Clone an identical BitCastInst - virtual BitCastInst *clone(LLVMContext &Context) const; + virtual BitCastInst *clone() const; // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const BitCastInst *) { return true; } diff --git a/lib/Transforms/Instrumentation/RSProfiling.cpp b/lib/Transforms/Instrumentation/RSProfiling.cpp index 9997d9dca98..3b72260db84 100644 --- a/lib/Transforms/Instrumentation/RSProfiling.cpp +++ b/lib/Transforms/Instrumentation/RSProfiling.cpp @@ -397,7 +397,7 @@ Value* ProfilerRS::Translate(Value* v) { return i; } else { //translate this - Instruction* i2 = i->clone(v->getContext()); + Instruction* i2 = i->clone(); if (i->hasName()) i2->setName("dup_" + i->getName()); TransCache[i] = i2; diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp index a2d210a36f2..f490a6d7f2c 100644 --- a/lib/Transforms/Scalar/GVN.cpp +++ b/lib/Transforms/Scalar/GVN.cpp @@ -2059,7 +2059,7 @@ bool GVN::performPRE(Function& F) { // will be available in the predecessor by the time we need them. Any // that weren't original present will have been instantiated earlier // in this loop. - Instruction *PREInstr = CurInst->clone(CurInst->getContext()); + Instruction *PREInstr = CurInst->clone(); bool success = true; for (unsigned i = 0, e = CurInst->getNumOperands(); i != e; ++i) { Value *Op = PREInstr->getOperand(i); diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp index 158b0d7f184..e2d9e0b9ec4 100644 --- a/lib/Transforms/Scalar/IndVarSimplify.cpp +++ b/lib/Transforms/Scalar/IndVarSimplify.cpp @@ -292,7 +292,7 @@ void IndVarSimplify::RewriteLoopExitValues(Loop *L, if (NumPreds != 1) { // Clone the PHI and delete the original one. This lets IVUsers and // any other maps purge the original user from their records. - PHINode *NewPN = PN->clone(PN->getContext()); + PHINode *NewPN = PN->clone(); NewPN->takeName(PN); NewPN->insertBefore(PN); PN->replaceAllUsesWith(NewPN); diff --git a/lib/Transforms/Scalar/JumpThreading.cpp b/lib/Transforms/Scalar/JumpThreading.cpp index 559b8cb72a9..21b6cebca56 100644 --- a/lib/Transforms/Scalar/JumpThreading.cpp +++ b/lib/Transforms/Scalar/JumpThreading.cpp @@ -934,7 +934,7 @@ bool JumpThreading::ThreadEdge(BasicBlock *BB, BasicBlock *PredBB, // Clone the non-phi instructions of BB into NewBB, keeping track of the // mapping and using it to remap operands in the cloned instructions. for (; !isa(BI); ++BI) { - Instruction *New = BI->clone(BI->getContext()); + Instruction *New = BI->clone(); New->setName(BI->getName()); NewBB->getInstList().push_back(New); ValueMapping[BI] = New; diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp index 1c298785da8..fe37ab4caa1 100644 --- a/lib/Transforms/Scalar/LICM.cpp +++ b/lib/Transforms/Scalar/LICM.cpp @@ -36,7 +36,6 @@ #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" #include "llvm/Instructions.h" -#include "llvm/LLVMContext.h" #include "llvm/Target/TargetData.h" #include "llvm/Analysis/LoopInfo.h" #include "llvm/Analysis/LoopPass.h" @@ -476,8 +475,6 @@ void LICM::sink(Instruction &I) { ++NumSunk; Changed = true; - LLVMContext &Context = I.getContext(); - // The case where there is only a single exit node of this loop is common // enough that we handle it as a special (more efficient) case. It is more // efficient to handle because there are no PHI nodes that need to be placed. @@ -573,7 +570,7 @@ void LICM::sink(Instruction &I) { ExitBlock->getInstList().insert(InsertPt, &I); New = &I; } else { - New = I.clone(Context); + New = I.clone(); CurAST->copyValue(&I, New); if (!I.getName().empty()) New->setName(I.getName()+".le"); @@ -596,7 +593,7 @@ void LICM::sink(Instruction &I) { if (AI) { std::vector Allocas; Allocas.push_back(AI); - PromoteMemToReg(Allocas, *DT, *DF, Context, CurAST); + PromoteMemToReg(Allocas, *DT, *DF, I.getContext(), CurAST); } } } diff --git a/lib/Transforms/Scalar/LoopRotation.cpp b/lib/Transforms/Scalar/LoopRotation.cpp index ca394bdc46a..34ba48c6b05 100644 --- a/lib/Transforms/Scalar/LoopRotation.cpp +++ b/lib/Transforms/Scalar/LoopRotation.cpp @@ -237,7 +237,7 @@ bool LoopRotate::rotateLoop(Loop *Lp, LPPassManager &LPM) { // This is not a PHI instruction. Insert its clone into original pre-header. // If this instruction is using a value from same basic block then // update it to use value from cloned instruction. - Instruction *C = In->clone(In->getContext()); + Instruction *C = In->clone(); C->setName(In->getName()); OrigPreHeader->getInstList().push_back(C); diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index 82eb14fb2ae..d8f6cc18a1e 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -24,7 +24,6 @@ #include "llvm/Constants.h" #include "llvm/Instructions.h" #include "llvm/IntrinsicInst.h" -#include "llvm/LLVMContext.h" #include "llvm/Type.h" #include "llvm/DerivedTypes.h" #include "llvm/Analysis/Dominators.h" @@ -2303,7 +2302,6 @@ void LoopStrengthReduce::OptimizeLoopTermCond(Loop *L) { // one register value. BasicBlock *LatchBlock = L->getLoopLatch(); BasicBlock *ExitingBlock = L->getExitingBlock(); - LLVMContext &Context = LatchBlock->getContext(); if (!ExitingBlock) // Multiple exits, just look at the exit in the latch block if there is one. @@ -2394,7 +2392,7 @@ void LoopStrengthReduce::OptimizeLoopTermCond(Loop *L) { Cond->moveBefore(TermBr); } else { // Otherwise, clone the terminating condition and insert into the loopend. - Cond = cast(Cond->clone(Context)); + Cond = cast(Cond->clone()); Cond->setName(L->getHeader()->getName() + ".termcond"); LatchBlock->getInstList().insert(TermBr, Cond); diff --git a/lib/Transforms/Scalar/TailDuplication.cpp b/lib/Transforms/Scalar/TailDuplication.cpp index 8345175e137..ee45231c1e9 100644 --- a/lib/Transforms/Scalar/TailDuplication.cpp +++ b/lib/Transforms/Scalar/TailDuplication.cpp @@ -306,7 +306,7 @@ void TailDup::eliminateUnconditionalBranch(BranchInst *Branch) { // keeping track of the mapping... // for (; BI != DestBlock->end(); ++BI) { - Instruction *New = BI->clone(BI->getContext()); + Instruction *New = BI->clone(); New->setName(BI->getName()); SourceBlock->getInstList().push_back(New); ValueMapping[BI] = New; diff --git a/lib/Transforms/Utils/BasicBlockUtils.cpp b/lib/Transforms/Utils/BasicBlockUtils.cpp index 736d26e75fb..4931ab3f7fa 100644 --- a/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -663,7 +663,7 @@ void llvm::CopyPrecedingStopPoint(Instruction *I, if (I != I->getParent()->begin()) { BasicBlock::iterator BBI = I; --BBI; if (DbgStopPointInst *DSPI = dyn_cast(BBI)) { - CallInst *newDSPI = DSPI->clone(I->getContext()); + CallInst *newDSPI = DSPI->clone(); newDSPI->insertBefore(InsertPos); } } diff --git a/lib/Transforms/Utils/CloneFunction.cpp b/lib/Transforms/Utils/CloneFunction.cpp index fd72ca1d91a..f042bc9f22c 100644 --- a/lib/Transforms/Utils/CloneFunction.cpp +++ b/lib/Transforms/Utils/CloneFunction.cpp @@ -43,7 +43,7 @@ BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, // Loop over all instructions, and copy them over. for (BasicBlock::const_iterator II = BB->begin(), IE = BB->end(); II != IE; ++II) { - Instruction *NewInst = II->clone(BB->getContext()); + Instruction *NewInst = II->clone(); if (II->hasName()) NewInst->setName(II->getName()+NameSuffix); NewBB->getInstList().push_back(NewInst); @@ -248,7 +248,7 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB, continue; } - Instruction *NewInst = II->clone(BB->getContext()); + Instruction *NewInst = II->clone(); if (II->hasName()) NewInst->setName(II->getName()+NameSuffix); NewBB->getInstList().push_back(NewInst); @@ -296,7 +296,7 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB, } if (!TerminatorDone) { - Instruction *NewInst = OldTI->clone(BB->getContext()); + Instruction *NewInst = OldTI->clone(); if (OldTI->hasName()) NewInst->setName(OldTI->getName()+NameSuffix); NewBB->getInstList().push_back(NewInst); diff --git a/lib/Transforms/Utils/InlineFunction.cpp b/lib/Transforms/Utils/InlineFunction.cpp index 4b133fd5e89..f9efc34dd95 100644 --- a/lib/Transforms/Utils/InlineFunction.cpp +++ b/lib/Transforms/Utils/InlineFunction.cpp @@ -374,7 +374,7 @@ bool llvm::InlineFunction(CallSite CS, CallGraph *CG, const TargetData *TD, BI != BE; ++BI) { if (DbgStopPointInst *DSPI = dyn_cast(BI)) { if (DbgRegionEndInst *NewDREI = - dyn_cast(DREI->clone(Context))) + dyn_cast(DREI->clone())) NewDREI->insertAfter(DSPI); break; } diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index 0938c44c96a..92b1335843d 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -16,7 +16,6 @@ #include "llvm/Constants.h" #include "llvm/Instructions.h" #include "llvm/IntrinsicInst.h" -#include "llvm/LLVMContext.h" #include "llvm/Type.h" #include "llvm/DerivedTypes.h" #include "llvm/GlobalVariable.h" @@ -911,7 +910,7 @@ HoistTerminator: return true; // Okay, it is safe to hoist the terminator. - Instruction *NT = I1->clone(BB1->getContext()); + Instruction *NT = I1->clone(); BIParent->getInstList().insert(BI, NT); if (NT->getType() != Type::getVoidTy(BB1->getContext())) { I1->replaceAllUsesWith(NT); @@ -1151,7 +1150,6 @@ static bool BlockIsSimpleEnoughToThreadThrough(BasicBlock *BB) { /// ultimate destination. static bool FoldCondBranchOnPHI(BranchInst *BI) { BasicBlock *BB = BI->getParent(); - LLVMContext &Context = BB->getContext(); PHINode *PN = dyn_cast(BI->getCondition()); // NOTE: we currently cannot transform this case if the PHI node is used // outside of the block. @@ -1205,7 +1203,7 @@ static bool FoldCondBranchOnPHI(BranchInst *BI) { TranslateMap[PN] = PN->getIncomingValueForBlock(PredBB); } else { // Clone the instruction. - Instruction *N = BBI->clone(Context); + Instruction *N = BBI->clone(); if (BBI->hasName()) N->setName(BBI->getName()+".c"); // Update operands due to translation. @@ -1218,7 +1216,7 @@ static bool FoldCondBranchOnPHI(BranchInst *BI) { } // Check for trivial simplification. - if (Constant *C = ConstantFoldInstruction(N, Context)) { + if (Constant *C = ConstantFoldInstruction(N, BB->getContext())) { TranslateMap[BBI] = C; delete N; // Constant folded away, don't need actual inst } else { @@ -1554,7 +1552,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI) { // Clone Cond into the predecessor basic block, and or/and the // two conditions together. - Instruction *New = Cond->clone(BB->getContext()); + Instruction *New = Cond->clone(); PredBlock->getInstList().insert(PBI, New); New->takeName(Cond); Cond->setName(New->getName()+".old"); @@ -1814,7 +1812,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) { << "INTO UNCOND BRANCH PRED: " << *Pred); Instruction *UncondBranch = Pred->getTerminator(); // Clone the return and add it to the end of the predecessor. - Instruction *NewRet = RI->clone(BB->getContext()); + Instruction *NewRet = RI->clone(); Pred->getInstList().push_back(NewRet); BasicBlock::iterator BBI = RI; diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index b7acce71e3a..1300e5fa259 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -2999,7 +2999,7 @@ void SwitchInst::setSuccessorV(unsigned idx, BasicBlock *B) { // Define these methods here so vtables don't get emitted into every translation // unit that uses these classes. -GetElementPtrInst *GetElementPtrInst::clone(LLVMContext&) const { +GetElementPtrInst *GetElementPtrInst::clone() const { GetElementPtrInst *New = new(getNumOperands()) GetElementPtrInst(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3009,7 +3009,7 @@ GetElementPtrInst *GetElementPtrInst::clone(LLVMContext&) const { return New; } -BinaryOperator *BinaryOperator::clone(LLVMContext&) const { +BinaryOperator *BinaryOperator::clone() const { BinaryOperator *New = Create(getOpcode(), Op<0>(), Op<1>()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3019,7 +3019,7 @@ BinaryOperator *BinaryOperator::clone(LLVMContext&) const { return New; } -FCmpInst* FCmpInst::clone(LLVMContext &Context) const { +FCmpInst* FCmpInst::clone() const { FCmpInst *New = new FCmpInst(getPredicate(), Op<0>(), Op<1>()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3028,7 +3028,7 @@ FCmpInst* FCmpInst::clone(LLVMContext &Context) const { } return New; } -ICmpInst* ICmpInst::clone(LLVMContext &Context) const { +ICmpInst* ICmpInst::clone() const { ICmpInst *New = new ICmpInst(getPredicate(), Op<0>(), Op<1>()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3038,7 +3038,7 @@ ICmpInst* ICmpInst::clone(LLVMContext &Context) const { return New; } -ExtractValueInst *ExtractValueInst::clone(LLVMContext&) const { +ExtractValueInst *ExtractValueInst::clone() const { ExtractValueInst *New = new ExtractValueInst(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3047,7 +3047,7 @@ ExtractValueInst *ExtractValueInst::clone(LLVMContext&) const { } return New; } -InsertValueInst *InsertValueInst::clone(LLVMContext&) const { +InsertValueInst *InsertValueInst::clone() const { InsertValueInst *New = new InsertValueInst(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3057,7 +3057,7 @@ InsertValueInst *InsertValueInst::clone(LLVMContext&) const { return New; } -MallocInst *MallocInst::clone(LLVMContext&) const { +MallocInst *MallocInst::clone() const { MallocInst *New = new MallocInst(getAllocatedType(), (Value*)getOperand(0), getAlignment()); @@ -3069,7 +3069,7 @@ MallocInst *MallocInst::clone(LLVMContext&) const { return New; } -AllocaInst *AllocaInst::clone(LLVMContext&) const { +AllocaInst *AllocaInst::clone() const { AllocaInst *New = new AllocaInst(getAllocatedType(), (Value*)getOperand(0), getAlignment()); @@ -3081,7 +3081,7 @@ AllocaInst *AllocaInst::clone(LLVMContext&) const { return New; } -FreeInst *FreeInst::clone(LLVMContext&) const { +FreeInst *FreeInst::clone() const { FreeInst *New = new FreeInst(getOperand(0)); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3091,7 +3091,7 @@ FreeInst *FreeInst::clone(LLVMContext&) const { return New; } -LoadInst *LoadInst::clone(LLVMContext&) const { +LoadInst *LoadInst::clone() const { LoadInst *New = new LoadInst(getOperand(0), Twine(), isVolatile(), getAlignment()); @@ -3103,7 +3103,7 @@ LoadInst *LoadInst::clone(LLVMContext&) const { return New; } -StoreInst *StoreInst::clone(LLVMContext&) const { +StoreInst *StoreInst::clone() const { StoreInst *New = new StoreInst(getOperand(0), getOperand(1), isVolatile(), getAlignment()); New->SubclassOptionalData = SubclassOptionalData; @@ -3114,7 +3114,7 @@ StoreInst *StoreInst::clone(LLVMContext&) const { return New; } -TruncInst *TruncInst::clone(LLVMContext&) const { +TruncInst *TruncInst::clone() const { TruncInst *New = new TruncInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3124,7 +3124,7 @@ TruncInst *TruncInst::clone(LLVMContext&) const { return New; } -ZExtInst *ZExtInst::clone(LLVMContext&) const { +ZExtInst *ZExtInst::clone() const { ZExtInst *New = new ZExtInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3134,7 +3134,7 @@ ZExtInst *ZExtInst::clone(LLVMContext&) const { return New; } -SExtInst *SExtInst::clone(LLVMContext&) const { +SExtInst *SExtInst::clone() const { SExtInst *New = new SExtInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3144,7 +3144,7 @@ SExtInst *SExtInst::clone(LLVMContext&) const { return New; } -FPTruncInst *FPTruncInst::clone(LLVMContext&) const { +FPTruncInst *FPTruncInst::clone() const { FPTruncInst *New = new FPTruncInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3154,7 +3154,7 @@ FPTruncInst *FPTruncInst::clone(LLVMContext&) const { return New; } -FPExtInst *FPExtInst::clone(LLVMContext&) const { +FPExtInst *FPExtInst::clone() const { FPExtInst *New = new FPExtInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3164,7 +3164,7 @@ FPExtInst *FPExtInst::clone(LLVMContext&) const { return New; } -UIToFPInst *UIToFPInst::clone(LLVMContext&) const { +UIToFPInst *UIToFPInst::clone() const { UIToFPInst *New = new UIToFPInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3174,7 +3174,7 @@ UIToFPInst *UIToFPInst::clone(LLVMContext&) const { return New; } -SIToFPInst *SIToFPInst::clone(LLVMContext&) const { +SIToFPInst *SIToFPInst::clone() const { SIToFPInst *New = new SIToFPInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3184,7 +3184,7 @@ SIToFPInst *SIToFPInst::clone(LLVMContext&) const { return New; } -FPToUIInst *FPToUIInst::clone(LLVMContext&) const { +FPToUIInst *FPToUIInst::clone() const { FPToUIInst *New = new FPToUIInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3194,7 +3194,7 @@ FPToUIInst *FPToUIInst::clone(LLVMContext&) const { return New; } -FPToSIInst *FPToSIInst::clone(LLVMContext&) const { +FPToSIInst *FPToSIInst::clone() const { FPToSIInst *New = new FPToSIInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3204,7 +3204,7 @@ FPToSIInst *FPToSIInst::clone(LLVMContext&) const { return New; } -PtrToIntInst *PtrToIntInst::clone(LLVMContext&) const { +PtrToIntInst *PtrToIntInst::clone() const { PtrToIntInst *New = new PtrToIntInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3214,7 +3214,7 @@ PtrToIntInst *PtrToIntInst::clone(LLVMContext&) const { return New; } -IntToPtrInst *IntToPtrInst::clone(LLVMContext&) const { +IntToPtrInst *IntToPtrInst::clone() const { IntToPtrInst *New = new IntToPtrInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3224,7 +3224,7 @@ IntToPtrInst *IntToPtrInst::clone(LLVMContext&) const { return New; } -BitCastInst *BitCastInst::clone(LLVMContext&) const { +BitCastInst *BitCastInst::clone() const { BitCastInst *New = new BitCastInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3234,7 +3234,7 @@ BitCastInst *BitCastInst::clone(LLVMContext&) const { return New; } -CallInst *CallInst::clone(LLVMContext&) const { +CallInst *CallInst::clone() const { CallInst *New = new(getNumOperands()) CallInst(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3244,7 +3244,7 @@ CallInst *CallInst::clone(LLVMContext&) const { return New; } -SelectInst *SelectInst::clone(LLVMContext&) const { +SelectInst *SelectInst::clone() const { SelectInst *New = SelectInst::Create(getOperand(0), getOperand(1), getOperand(2)); @@ -3256,7 +3256,7 @@ SelectInst *SelectInst::clone(LLVMContext&) const { return New; } -VAArgInst *VAArgInst::clone(LLVMContext&) const { +VAArgInst *VAArgInst::clone() const { VAArgInst *New = new VAArgInst(getOperand(0), getType()); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3266,7 +3266,7 @@ VAArgInst *VAArgInst::clone(LLVMContext&) const { return New; } -ExtractElementInst *ExtractElementInst::clone(LLVMContext&) const { +ExtractElementInst *ExtractElementInst::clone() const { ExtractElementInst *New = ExtractElementInst::Create(getOperand(0), getOperand(1)); New->SubclassOptionalData = SubclassOptionalData; @@ -3277,7 +3277,7 @@ ExtractElementInst *ExtractElementInst::clone(LLVMContext&) const { return New; } -InsertElementInst *InsertElementInst::clone(LLVMContext&) const { +InsertElementInst *InsertElementInst::clone() const { InsertElementInst *New = InsertElementInst::Create(getOperand(0), getOperand(1), getOperand(2)); @@ -3289,7 +3289,7 @@ InsertElementInst *InsertElementInst::clone(LLVMContext&) const { return New; } -ShuffleVectorInst *ShuffleVectorInst::clone(LLVMContext&) const { +ShuffleVectorInst *ShuffleVectorInst::clone() const { ShuffleVectorInst *New = new ShuffleVectorInst(getOperand(0), getOperand(1), getOperand(2)); @@ -3301,7 +3301,7 @@ ShuffleVectorInst *ShuffleVectorInst::clone(LLVMContext&) const { return New; } -PHINode *PHINode::clone(LLVMContext&) const { +PHINode *PHINode::clone() const { PHINode *New = new PHINode(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3311,7 +3311,7 @@ PHINode *PHINode::clone(LLVMContext&) const { return New; } -ReturnInst *ReturnInst::clone(LLVMContext&) const { +ReturnInst *ReturnInst::clone() const { ReturnInst *New = new(getNumOperands()) ReturnInst(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3321,7 +3321,7 @@ ReturnInst *ReturnInst::clone(LLVMContext&) const { return New; } -BranchInst *BranchInst::clone(LLVMContext&) const { +BranchInst *BranchInst::clone() const { unsigned Ops(getNumOperands()); BranchInst *New = new(Ops, Ops == 1) BranchInst(*this); New->SubclassOptionalData = SubclassOptionalData; @@ -3332,7 +3332,7 @@ BranchInst *BranchInst::clone(LLVMContext&) const { return New; } -SwitchInst *SwitchInst::clone(LLVMContext&) const { +SwitchInst *SwitchInst::clone() const { SwitchInst *New = new SwitchInst(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3342,7 +3342,7 @@ SwitchInst *SwitchInst::clone(LLVMContext&) const { return New; } -InvokeInst *InvokeInst::clone(LLVMContext&) const { +InvokeInst *InvokeInst::clone() const { InvokeInst *New = new(getNumOperands()) InvokeInst(*this); New->SubclassOptionalData = SubclassOptionalData; if (hasMetadata()) { @@ -3352,22 +3352,20 @@ InvokeInst *InvokeInst::clone(LLVMContext&) const { return New; } -UnwindInst *UnwindInst::clone(LLVMContext &C) const { - UnwindInst *New = new UnwindInst(C); +UnwindInst *UnwindInst::clone() const { + LLVMContext &Context = getContext(); + UnwindInst *New = new UnwindInst(Context); New->SubclassOptionalData = SubclassOptionalData; - if (hasMetadata()) { - LLVMContext &Context = getContext(); + if (hasMetadata()) Context.pImpl->TheMetadata.ValueIsCloned(this, New); - } return New; } -UnreachableInst *UnreachableInst::clone(LLVMContext &C) const { - UnreachableInst *New = new UnreachableInst(C); +UnreachableInst *UnreachableInst::clone() const { + LLVMContext &Context = getContext(); + UnreachableInst *New = new UnreachableInst(Context); New->SubclassOptionalData = SubclassOptionalData; - if (hasMetadata()) { - LLVMContext &Context = getContext(); + if (hasMetadata()) Context.pImpl->TheMetadata.ValueIsCloned(this, New); - } return New; }