[llvm] r240588 - Devirtualize Instruction::clone_impl

Pete Cooper peter_cooper at apple.com
Wed Jun 24 13:31:43 PDT 2015


Apologies, this had a much better commit message but i must have messed up a rebase or —amend.

Ultimately this does what the subject says.  It removes virtual/override from Instruction::clone_impl.

To give a few more details, users still call Instruction::clone(), but this now dispatches to subclass::cloneImpl().
The renaming was done as I was touching every line anyway, and this now matches Metadata and our naming conventions don’t typically allow _ anyway.

For UserOp1 and UserOp2 opcodes, unfortunately this meant providing a default cloneImpl in Instruction, but this will error out if anyone actually calls it.

Thanks,
Pete

> On Jun 24, 2015, at 1:22 PM, Pete Cooper <peter_cooper at apple.com> wrote:
> 
> Author: pete
> Date: Wed Jun 24 15:22:23 2015
> New Revision: 240588
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=240588&view=rev
> Log:
> Devirtualize Instruction::clone_impl
> 
> Modified:
>    llvm/trunk/include/llvm/IR/InstrTypes.h
>    llvm/trunk/include/llvm/IR/Instruction.h
>    llvm/trunk/include/llvm/IR/Instructions.h
>    llvm/trunk/lib/IR/Instruction.cpp
>    llvm/trunk/lib/IR/Instructions.cpp
> 
> Modified: llvm/trunk/include/llvm/IR/InstrTypes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/InstrTypes.h?rev=240588&r1=240587&r2=240588&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/InstrTypes.h (original)
> +++ llvm/trunk/include/llvm/IR/InstrTypes.h Wed Jun 24 15:22:23 2015
> @@ -139,7 +139,11 @@ protected:
>                  const Twine &Name, Instruction *InsertBefore);
>   BinaryOperator(BinaryOps iType, Value *S1, Value *S2, Type *Ty,
>                  const Twine &Name, BasicBlock *InsertAtEnd);
> -  BinaryOperator *clone_impl() const override;
> +
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  BinaryOperator *cloneImpl() const;
> +
> public:
>   // allocate space for exactly two operands
>   void *operator new(size_t s) {
> 
> Modified: llvm/trunk/include/llvm/IR/Instruction.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Instruction.h?rev=240588&r1=240587&r2=240588&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/Instruction.h (original)
> +++ llvm/trunk/include/llvm/IR/Instruction.h Wed Jun 24 15:22:23 2015
> @@ -509,8 +509,10 @@ protected:
>               Instruction *InsertBefore = nullptr);
>   Instruction(Type *Ty, unsigned iType, Use *Ops, unsigned NumOps,
>               BasicBlock *InsertAtEnd);
> -  virtual Instruction *clone_impl() const = 0;
> 
> +private:
> +  /// Create a copy of this instruction.
> +  Instruction *cloneImpl() const;
> };
> 
> inline Instruction *ilist_traits<Instruction>::createSentinel() const {
> 
> Modified: llvm/trunk/include/llvm/IR/Instructions.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Instructions.h?rev=240588&r1=240587&r2=240588&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/Instructions.h (original)
> +++ llvm/trunk/include/llvm/IR/Instructions.h Wed Jun 24 15:22:23 2015
> @@ -76,7 +76,10 @@ class AllocaInst : public UnaryInstructi
>   Type *AllocatedType;
> 
> protected:
> -  AllocaInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  AllocaInst *cloneImpl() const;
> +
> public:
>   explicit AllocaInst(Type *Ty, Value *ArraySize = nullptr,
>                       const Twine &Name = "",
> @@ -173,7 +176,10 @@ private:
> class LoadInst : public UnaryInstruction {
>   void AssertOK();
> protected:
> -  LoadInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  LoadInst *cloneImpl() const;
> +
> public:
>   LoadInst(Value *Ptr, const Twine &NameStr, Instruction *InsertBefore);
>   LoadInst(Value *Ptr, const Twine &NameStr, BasicBlock *InsertAtEnd);
> @@ -310,7 +316,10 @@ class StoreInst : public Instruction {
>   void *operator new(size_t, unsigned) = delete;
>   void AssertOK();
> protected:
> -  StoreInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  StoreInst *cloneImpl() const;
> +
> public:
>   // allocate space for exactly two operands
>   void *operator new(size_t s) {
> @@ -436,7 +445,10 @@ class FenceInst : public Instruction {
>   void *operator new(size_t, unsigned) = delete;
>   void Init(AtomicOrdering Ordering, SynchronizationScope SynchScope);
> protected:
> -  FenceInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  FenceInst *cloneImpl() const;
> +
> public:
>   // allocate space for exactly zero operands
>   void *operator new(size_t s) {
> @@ -505,7 +517,10 @@ class AtomicCmpXchgInst : public Instruc
>             AtomicOrdering SuccessOrdering, AtomicOrdering FailureOrdering,
>             SynchronizationScope SynchScope);
> protected:
> -  AtomicCmpXchgInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  AtomicCmpXchgInst *cloneImpl() const;
> +
> public:
>   // allocate space for exactly three operands
>   void *operator new(size_t s) {
> @@ -658,7 +673,10 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(Ato
> class AtomicRMWInst : public Instruction {
>   void *operator new(size_t, unsigned) = delete;
> protected:
> -  AtomicRMWInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  AtomicRMWInst *cloneImpl() const;
> +
> public:
>   /// This enumeration lists the possible modifications atomicrmw can make.  In
>   /// the descriptions, 'p' is the pointer to the instruction's memory location,
> @@ -827,7 +845,10 @@ class GetElementPtrInst : public Instruc
>                            const Twine &NameStr, BasicBlock *InsertAtEnd);
> 
> protected:
> -  GetElementPtrInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  GetElementPtrInst *cloneImpl() const;
> +
> public:
>   static GetElementPtrInst *Create(Type *PointeeType, Value *Ptr,
>                                    ArrayRef<Value *> IdxList,
> @@ -1078,8 +1099,11 @@ class ICmpInst: public CmpInst {
>   }
> 
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical ICmpInst
> -  ICmpInst *clone_impl() const override;
> +  ICmpInst *cloneImpl() const;
> +
> public:
>   /// \brief Constructor with insert-before-instruction semantics.
>   ICmpInst(
> @@ -1210,8 +1234,11 @@ public:
> /// \brief Represents a floating point comparison operator.
> class FCmpInst: public CmpInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical FCmpInst
> -  FCmpInst *clone_impl() const override;
> +  FCmpInst *cloneImpl() const;
> +
> public:
>   /// \brief Constructor with insert-before-instruction semantics.
>   FCmpInst(
> @@ -1350,7 +1377,10 @@ class CallInst : public Instruction {
>                     Instruction *InsertBefore);
>   CallInst(Value *F, const Twine &NameStr, BasicBlock *InsertAtEnd);
> protected:
> -  CallInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  CallInst *cloneImpl() const;
> +
> public:
>   static CallInst *Create(Value *Func,
>                           ArrayRef<Value *> Args,
> @@ -1687,7 +1717,10 @@ class SelectInst : public Instruction {
>     setName(NameStr);
>   }
> protected:
> -  SelectInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  SelectInst *cloneImpl() const;
> +
> public:
>   static SelectInst *Create(Value *C, Value *S1, Value *S2,
>                             const Twine &NameStr = "",
> @@ -1742,7 +1775,9 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(Sel
> ///
> class VAArgInst : public UnaryInstruction {
> protected:
> -  VAArgInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  VAArgInst *cloneImpl() const;
> 
> public:
>   VAArgInst(Value *List, Type *Ty, const Twine &NameStr = "",
> @@ -1782,7 +1817,9 @@ class ExtractElementInst : public Instru
>   ExtractElementInst(Value *Vec, Value *Idx, const Twine &NameStr,
>                      BasicBlock *InsertAtEnd);
> protected:
> -  ExtractElementInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  ExtractElementInst *cloneImpl() const;
> 
> public:
>   static ExtractElementInst *Create(Value *Vec, Value *Idx,
> @@ -1843,7 +1880,9 @@ class InsertElementInst : public Instruc
>   InsertElementInst(Value *Vec, Value *NewElt, Value *Idx,
>                     const Twine &NameStr, BasicBlock *InsertAtEnd);
> protected:
> -  InsertElementInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  InsertElementInst *cloneImpl() const;
> 
> public:
>   static InsertElementInst *Create(Value *Vec, Value *NewElt, Value *Idx,
> @@ -1896,7 +1935,9 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(Ins
> ///
> class ShuffleVectorInst : public Instruction {
> protected:
> -  ShuffleVectorInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  ShuffleVectorInst *cloneImpl() const;
> 
> public:
>   // allocate space for exactly three operands
> @@ -1997,7 +2038,9 @@ class ExtractValueInst : public UnaryIns
>     return User::operator new(s, 1);
>   }
> protected:
> -  ExtractValueInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  ExtractValueInst *cloneImpl() const;
> 
> public:
>   static ExtractValueInst *Create(Value *Agg,
> @@ -2111,7 +2154,10 @@ class InsertValueInst : public Instructi
>   InsertValueInst(Value *Agg, Value *Val, unsigned Idx,
>                   const Twine &NameStr, BasicBlock *InsertAtEnd);
> protected:
> -  InsertValueInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  InsertValueInst *cloneImpl() const;
> +
> public:
>   // allocate space for exactly two operands
>   void *operator new(size_t s) {
> @@ -2252,7 +2298,10 @@ protected:
>     User::allocHungoffUses(N, /* IsPhi */ true);
>   }
> 
> -  PHINode *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  PHINode *cloneImpl() const;
> +
> public:
>   /// Constructors - NumReservedValues is a hint for the number of incoming
>   /// edges that this phi node will have (use 0 if you really have no idea).
> @@ -2445,7 +2494,10 @@ private:
>                           const Twine &NameStr, BasicBlock *InsertAtEnd);
> 
> protected:
> -  LandingPadInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  LandingPadInst *cloneImpl() const;
> +
> public:
>   /// Constructors - NumReservedClauses is a hint for the number of incoming
>   /// clauses that this landingpad will have (use 0 if you really have no idea).
> @@ -2538,7 +2590,10 @@ private:
>   ReturnInst(LLVMContext &C, Value *retVal, BasicBlock *InsertAtEnd);
>   explicit ReturnInst(LLVMContext &C, BasicBlock *InsertAtEnd);
> protected:
> -  ReturnInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  ReturnInst *cloneImpl() const;
> +
> public:
>   static ReturnInst* Create(LLVMContext &C, Value *retVal = nullptr,
>                             Instruction *InsertBefore = nullptr) {
> @@ -2610,7 +2665,10 @@ class BranchInst : public TerminatorInst
>   BranchInst(BasicBlock *IfTrue, BasicBlock *IfFalse, Value *Cond,
>              BasicBlock *InsertAtEnd);
> protected:
> -  BranchInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  BranchInst *cloneImpl() const;
> +
> public:
>   static BranchInst *Create(BasicBlock *IfTrue,
>                             Instruction *InsertBefore = nullptr) {
> @@ -2717,7 +2775,10 @@ class SwitchInst : public TerminatorInst
>   SwitchInst(Value *Value, BasicBlock *Default, unsigned NumCases,
>              BasicBlock *InsertAtEnd);
> protected:
> -  SwitchInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  SwitchInst *cloneImpl() const;
> +
> public:
> 
>   // -2
> @@ -3022,7 +3083,10 @@ class IndirectBrInst : public Terminator
>   /// autoinserts at the end of the specified BasicBlock.
>   IndirectBrInst(Value *Address, unsigned NumDests, BasicBlock *InsertAtEnd);
> protected:
> -  IndirectBrInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  IndirectBrInst *cloneImpl() const;
> +
> public:
>   static IndirectBrInst *Create(Value *Address, unsigned NumDests,
>                                 Instruction *InsertBefore = nullptr) {
> @@ -3129,7 +3193,10 @@ class InvokeInst : public TerminatorInst
>                     ArrayRef<Value *> Args, unsigned Values,
>                     const Twine &NameStr, BasicBlock *InsertAtEnd);
> protected:
> -  InvokeInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  InvokeInst *cloneImpl() const;
> +
> public:
>   static InvokeInst *Create(Value *Func,
>                             BasicBlock *IfNormal, BasicBlock *IfException,
> @@ -3424,7 +3491,10 @@ class ResumeInst : public TerminatorInst
>   explicit ResumeInst(Value *Exn, Instruction *InsertBefore=nullptr);
>   ResumeInst(Value *Exn, BasicBlock *InsertAtEnd);
> protected:
> -  ResumeInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  ResumeInst *cloneImpl() const;
> +
> public:
>   static ResumeInst *Create(Value *Exn, Instruction *InsertBefore = nullptr) {
>     return new(1) ResumeInst(Exn, InsertBefore);
> @@ -3473,7 +3543,9 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(Res
> class UnreachableInst : public TerminatorInst {
>   void *operator new(size_t, unsigned) = delete;
> protected:
> -  UnreachableInst *clone_impl() const override;
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
> +  UnreachableInst *cloneImpl() const;
> 
> public:
>   // allocate space for exactly zero operands
> @@ -3505,8 +3577,10 @@ private:
> /// \brief This class represents a truncation of integer types.
> class TruncInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical TruncInst
> -  TruncInst *clone_impl() const override;
> +  TruncInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3541,8 +3615,10 @@ public:
> /// \brief This class represents zero extension of integer types.
> class ZExtInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical ZExtInst
> -  ZExtInst *clone_impl() const override;
> +  ZExtInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3577,8 +3653,10 @@ public:
> /// \brief This class represents a sign extension of integer types.
> class SExtInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical SExtInst
> -  SExtInst *clone_impl() const override;
> +  SExtInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3613,8 +3691,10 @@ public:
> /// \brief This class represents a truncation of floating point types.
> class FPTruncInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical FPTruncInst
> -  FPTruncInst *clone_impl() const override;
> +  FPTruncInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3649,8 +3729,10 @@ public:
> /// \brief This class represents an extension of floating point types.
> class FPExtInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical FPExtInst
> -  FPExtInst *clone_impl() const override;
> +  FPExtInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3685,8 +3767,10 @@ public:
> /// \brief This class represents a cast unsigned integer to floating point.
> class UIToFPInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical UIToFPInst
> -  UIToFPInst *clone_impl() const override;
> +  UIToFPInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3721,8 +3805,10 @@ public:
> /// \brief This class represents a cast from signed integer to floating point.
> class SIToFPInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical SIToFPInst
> -  SIToFPInst *clone_impl() const override;
> +  SIToFPInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3757,8 +3843,10 @@ public:
> /// \brief This class represents a cast from floating point to unsigned integer
> class FPToUIInst  : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical FPToUIInst
> -  FPToUIInst *clone_impl() const override;
> +  FPToUIInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3793,8 +3881,10 @@ public:
> /// \brief This class represents a cast from floating point to signed integer.
> class FPToSIInst  : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical FPToSIInst
> -  FPToSIInst *clone_impl() const override;
> +  FPToSIInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3845,8 +3935,10 @@ public:
>     BasicBlock *InsertAtEnd       ///< The block to insert the instruction into
>   );
> 
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical IntToPtrInst
> -  IntToPtrInst *clone_impl() const override;
> +  IntToPtrInst *cloneImpl() const;
> 
>   /// \brief Returns the address space of this instruction's pointer type.
>   unsigned getAddressSpace() const {
> @@ -3869,8 +3961,10 @@ public:
> /// \brief This class represents a cast from a pointer to an integer
> class PtrToIntInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical PtrToIntInst
> -  PtrToIntInst *clone_impl() const override;
> +  PtrToIntInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3917,8 +4011,10 @@ public:
> /// \brief This class represents a no-op cast from one type to another.
> class BitCastInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical BitCastInst
> -  BitCastInst *clone_impl() const override;
> +  BitCastInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> @@ -3954,8 +4050,10 @@ public:
> /// one address space to another.
> class AddrSpaceCastInst : public CastInst {
> protected:
> +  // Note: Instruction needs to be a friend here to call cloneImpl.
> +  friend class Instruction;
>   /// \brief Clone an identical AddrSpaceCastInst
> -  AddrSpaceCastInst *clone_impl() const override;
> +  AddrSpaceCastInst *cloneImpl() const;
> 
> public:
>   /// \brief Constructor with insert-before-instruction semantics
> 
> Modified: llvm/trunk/lib/IR/Instruction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Instruction.cpp?rev=240588&r1=240587&r2=240588&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/Instruction.cpp (original)
> +++ llvm/trunk/lib/IR/Instruction.cpp Wed Jun 24 15:22:23 2015
> @@ -534,8 +534,23 @@ bool Instruction::isNilpotent(unsigned O
>   return Opcode == Xor;
> }
> 
> +Instruction *Instruction::cloneImpl() const {
> +  llvm_unreachable("Subclass of Instruction failed to implement cloneImpl");
> +}
> +
> Instruction *Instruction::clone() const {
> -  Instruction *New = clone_impl();
> +  Instruction *New = nullptr;
> +  switch (getOpcode()) {
> +  default:
> +    llvm_unreachable("Unhandled Opcode.");
> +#define HANDLE_INST(num, opc, clas)                                            \
> +  case Instruction::opc:                                                       \
> +    New = cast<clas>(this)->cloneImpl();                                       \
> +    break;
> +#include "llvm/IR/Instruction.def"
> +#undef HANDLE_INST
> +  }
> +
>   New->SubclassOptionalData = SubclassOptionalData;
>   if (!hasMetadata())
>     return New;
> 
> Modified: llvm/trunk/lib/IR/Instructions.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Instructions.cpp?rev=240588&r1=240587&r2=240588&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/Instructions.cpp (original)
> +++ llvm/trunk/lib/IR/Instructions.cpp Wed Jun 24 15:22:23 2015
> @@ -3448,55 +3448,55 @@ void IndirectBrInst::setSuccessorV(unsig
> }
> 
> //===----------------------------------------------------------------------===//
> -//                           clone_impl() implementations
> +//                           cloneImpl() implementations
> //===----------------------------------------------------------------------===//
> 
> // Define these methods here so vtables don't get emitted into every translation
> // unit that uses these classes.
> 
> -GetElementPtrInst *GetElementPtrInst::clone_impl() const {
> +GetElementPtrInst *GetElementPtrInst::cloneImpl() const {
>   return new (getNumOperands()) GetElementPtrInst(*this);
> }
> 
> -BinaryOperator *BinaryOperator::clone_impl() const {
> +BinaryOperator *BinaryOperator::cloneImpl() const {
>   return Create(getOpcode(), Op<0>(), Op<1>());
> }
> 
> -FCmpInst* FCmpInst::clone_impl() const {
> +FCmpInst *FCmpInst::cloneImpl() const {
>   return new FCmpInst(getPredicate(), Op<0>(), Op<1>());
> }
> 
> -ICmpInst* ICmpInst::clone_impl() const {
> +ICmpInst *ICmpInst::cloneImpl() const {
>   return new ICmpInst(getPredicate(), Op<0>(), Op<1>());
> }
> 
> -ExtractValueInst *ExtractValueInst::clone_impl() const {
> +ExtractValueInst *ExtractValueInst::cloneImpl() const {
>   return new ExtractValueInst(*this);
> }
> 
> -InsertValueInst *InsertValueInst::clone_impl() const {
> +InsertValueInst *InsertValueInst::cloneImpl() const {
>   return new InsertValueInst(*this);
> }
> 
> -AllocaInst *AllocaInst::clone_impl() const {
> +AllocaInst *AllocaInst::cloneImpl() const {
>   AllocaInst *Result = new AllocaInst(getAllocatedType(),
>                                       (Value *)getOperand(0), getAlignment());
>   Result->setUsedWithInAlloca(isUsedWithInAlloca());
>   return Result;
> }
> 
> -LoadInst *LoadInst::clone_impl() const {
> +LoadInst *LoadInst::cloneImpl() const {
>   return new LoadInst(getOperand(0), Twine(), isVolatile(),
>                       getAlignment(), getOrdering(), getSynchScope());
> }
> 
> -StoreInst *StoreInst::clone_impl() const {
> +StoreInst *StoreInst::cloneImpl() const {
>   return new StoreInst(getOperand(0), getOperand(1), isVolatile(),
>                        getAlignment(), getOrdering(), getSynchScope());
> 
> }
> 
> -AtomicCmpXchgInst *AtomicCmpXchgInst::clone_impl() const {
> +AtomicCmpXchgInst *AtomicCmpXchgInst::cloneImpl() const {
>   AtomicCmpXchgInst *Result =
>     new AtomicCmpXchgInst(getOperand(0), getOperand(1), getOperand(2),
>                           getSuccessOrdering(), getFailureOrdering(),
> @@ -3506,7 +3506,7 @@ AtomicCmpXchgInst *AtomicCmpXchgInst::cl
>   return Result;
> }
> 
> -AtomicRMWInst *AtomicRMWInst::clone_impl() const {
> +AtomicRMWInst *AtomicRMWInst::cloneImpl() const {
>   AtomicRMWInst *Result =
>     new AtomicRMWInst(getOperation(),getOperand(0), getOperand(1),
>                       getOrdering(), getSynchScope());
> @@ -3514,120 +3514,113 @@ AtomicRMWInst *AtomicRMWInst::clone_impl
>   return Result;
> }
> 
> -FenceInst *FenceInst::clone_impl() const {
> +FenceInst *FenceInst::cloneImpl() const {
>   return new FenceInst(getContext(), getOrdering(), getSynchScope());
> }
> 
> -TruncInst *TruncInst::clone_impl() const {
> +TruncInst *TruncInst::cloneImpl() const {
>   return new TruncInst(getOperand(0), getType());
> }
> 
> -ZExtInst *ZExtInst::clone_impl() const {
> +ZExtInst *ZExtInst::cloneImpl() const {
>   return new ZExtInst(getOperand(0), getType());
> }
> 
> -SExtInst *SExtInst::clone_impl() const {
> +SExtInst *SExtInst::cloneImpl() const {
>   return new SExtInst(getOperand(0), getType());
> }
> 
> -FPTruncInst *FPTruncInst::clone_impl() const {
> +FPTruncInst *FPTruncInst::cloneImpl() const {
>   return new FPTruncInst(getOperand(0), getType());
> }
> 
> -FPExtInst *FPExtInst::clone_impl() const {
> +FPExtInst *FPExtInst::cloneImpl() const {
>   return new FPExtInst(getOperand(0), getType());
> }
> 
> -UIToFPInst *UIToFPInst::clone_impl() const {
> +UIToFPInst *UIToFPInst::cloneImpl() const {
>   return new UIToFPInst(getOperand(0), getType());
> }
> 
> -SIToFPInst *SIToFPInst::clone_impl() const {
> +SIToFPInst *SIToFPInst::cloneImpl() const {
>   return new SIToFPInst(getOperand(0), getType());
> }
> 
> -FPToUIInst *FPToUIInst::clone_impl() const {
> +FPToUIInst *FPToUIInst::cloneImpl() const {
>   return new FPToUIInst(getOperand(0), getType());
> }
> 
> -FPToSIInst *FPToSIInst::clone_impl() const {
> +FPToSIInst *FPToSIInst::cloneImpl() const {
>   return new FPToSIInst(getOperand(0), getType());
> }
> 
> -PtrToIntInst *PtrToIntInst::clone_impl() const {
> +PtrToIntInst *PtrToIntInst::cloneImpl() const {
>   return new PtrToIntInst(getOperand(0), getType());
> }
> 
> -IntToPtrInst *IntToPtrInst::clone_impl() const {
> +IntToPtrInst *IntToPtrInst::cloneImpl() const {
>   return new IntToPtrInst(getOperand(0), getType());
> }
> 
> -BitCastInst *BitCastInst::clone_impl() const {
> +BitCastInst *BitCastInst::cloneImpl() const {
>   return new BitCastInst(getOperand(0), getType());
> }
> 
> -AddrSpaceCastInst *AddrSpaceCastInst::clone_impl() const {
> +AddrSpaceCastInst *AddrSpaceCastInst::cloneImpl() const {
>   return new AddrSpaceCastInst(getOperand(0), getType());
> }
> 
> -CallInst *CallInst::clone_impl() const {
> +CallInst *CallInst::cloneImpl() const {
>   return  new(getNumOperands()) CallInst(*this);
> }
> 
> -SelectInst *SelectInst::clone_impl() const {
> +SelectInst *SelectInst::cloneImpl() const {
>   return SelectInst::Create(getOperand(0), getOperand(1), getOperand(2));
> }
> 
> -VAArgInst *VAArgInst::clone_impl() const {
> +VAArgInst *VAArgInst::cloneImpl() const {
>   return new VAArgInst(getOperand(0), getType());
> }
> 
> -ExtractElementInst *ExtractElementInst::clone_impl() const {
> +ExtractElementInst *ExtractElementInst::cloneImpl() const {
>   return ExtractElementInst::Create(getOperand(0), getOperand(1));
> }
> 
> -InsertElementInst *InsertElementInst::clone_impl() const {
> +InsertElementInst *InsertElementInst::cloneImpl() const {
>   return InsertElementInst::Create(getOperand(0), getOperand(1), getOperand(2));
> }
> 
> -ShuffleVectorInst *ShuffleVectorInst::clone_impl() const {
> +ShuffleVectorInst *ShuffleVectorInst::cloneImpl() const {
>   return new ShuffleVectorInst(getOperand(0), getOperand(1), getOperand(2));
> }
> 
> -PHINode *PHINode::clone_impl() const {
> -  return new PHINode(*this);
> -}
> +PHINode *PHINode::cloneImpl() const { return new PHINode(*this); }
> 
> -LandingPadInst *LandingPadInst::clone_impl() const {
> +LandingPadInst *LandingPadInst::cloneImpl() const {
>   return new LandingPadInst(*this);
> }
> 
> -ReturnInst *ReturnInst::clone_impl() const {
> +ReturnInst *ReturnInst::cloneImpl() const {
>   return new(getNumOperands()) ReturnInst(*this);
> }
> 
> -BranchInst *BranchInst::clone_impl() const {
> +BranchInst *BranchInst::cloneImpl() const {
>   return new(getNumOperands()) BranchInst(*this);
> }
> 
> -SwitchInst *SwitchInst::clone_impl() const {
> -  return new SwitchInst(*this);
> -}
> +SwitchInst *SwitchInst::cloneImpl() const { return new SwitchInst(*this); }
> 
> -IndirectBrInst *IndirectBrInst::clone_impl() const {
> +IndirectBrInst *IndirectBrInst::cloneImpl() const {
>   return new IndirectBrInst(*this);
> }
> 
> -
> -InvokeInst *InvokeInst::clone_impl() const {
> +InvokeInst *InvokeInst::cloneImpl() const {
>   return new(getNumOperands()) InvokeInst(*this);
> }
> 
> -ResumeInst *ResumeInst::clone_impl() const {
> -  return new(1) ResumeInst(*this);
> -}
> +ResumeInst *ResumeInst::cloneImpl() const { return new (1) ResumeInst(*this); }
> 
> -UnreachableInst *UnreachableInst::clone_impl() const {
> +UnreachableInst *UnreachableInst::cloneImpl() const {
>   LLVMContext &Context = getContext();
>   return new UnreachableInst(Context);
> }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list