Delete User::dropHungOffUses and move it in to ~User which is the only caller. NFC.
authorPete Cooper <peter_cooper@apple.com>
Wed, 10 Jun 2015 22:38:38 +0000 (22:38 +0000)
committerPete Cooper <peter_cooper@apple.com>
Wed, 10 Jun 2015 22:38:38 +0000 (22:38 +0000)
Now that the subclasses which care about hung off uses let ~User clean it up,
there's no need for a separate method.  Just inline it to ~User and delete it.

Reviewed by Duncan Exon Smith.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239491 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/Instructions.h
include/llvm/IR/User.h
lib/IR/Instructions.cpp

index 5e216f0c0cf19f109ef64a6dea932515772d16a4..131de3db3c5ad1957e132c0d6a9e9cf556eef9f0 100644 (file)
@@ -2265,7 +2265,6 @@ public:
                          const Twine &NameStr, BasicBlock *InsertAtEnd) {
     return new PHINode(Ty, NumReservedValues, NameStr, InsertAtEnd);
   }
-  ~PHINode() override;
 
   /// Provide fast operand accessors
   DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
@@ -2458,7 +2457,6 @@ public:
   static LandingPadInst *Create(Type *RetTy, Value *PersonalityFn,
                                 unsigned NumReservedClauses,
                                 const Twine &NameStr, BasicBlock *InsertAtEnd);
-  ~LandingPadInst() override;
 
   /// Provide fast operand accessors
   DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
@@ -2857,8 +2855,6 @@ public:
     return new SwitchInst(Value, Default, NumCases, InsertAtEnd);
   }
 
-  ~SwitchInst() override;
-
   /// Provide fast operand accessors
   DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
 
@@ -3043,7 +3039,6 @@ public:
                                 BasicBlock *InsertAtEnd) {
     return new IndirectBrInst(Address, NumDests, InsertAtEnd);
   }
-  ~IndirectBrInst() override;
 
   /// Provide fast operand accessors.
   DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
index df6034d0b481546023099ecad32e8f1a901733ab..b68dcf9cc2426ff7837f960ad86a935aab1ce206 100644 (file)
@@ -58,14 +58,16 @@ protected:
   /// \param IsPhi identifies callers which are phi nodes and which need
   /// N BasicBlock* allocated along with N
   Use *allocHungoffUses(unsigned N, bool IsPhi = false);
-  void dropHungoffUses() {
-    Use::zap(OperandList, OperandList + NumOperands, true);
-    OperandList = nullptr;
-    // Reset NumOperands so User::operator delete() does the right thing.
-    NumOperands = 0;
-  }
 public:
-  ~User() override { Use::zap(OperandList, OperandList + NumOperands); }
+  ~User() override {
+    // drop the hung off uses.
+    Use::zap(OperandList, OperandList + NumOperands, HasHungOffUses);
+    if (HasHungOffUses) {
+      OperandList = nullptr;
+      // Reset NumOperands so User::operator delete() does the right thing.
+      NumOperands = 0;
+    }
+  }
   /// \brief Free memory allocated for User and Use objects.
   void operator delete(void *Usr);
   /// \brief Placement delete - required by std, but never called.
index 06e2d0913cec03314e00610008e349ba4a718c89..9c8f66c11de4ccb83c333fd719d1481936918663 100644 (file)
@@ -93,10 +93,6 @@ PHINode::PHINode(const PHINode &PN)
   SubclassOptionalData = PN.SubclassOptionalData;
 }
 
-PHINode::~PHINode() {
-  dropHungoffUses();
-}
-
 // removeIncomingValue - Remove an incoming value.  This is useful if a
 // predecessor basic block is deleted.
 Value *PHINode::removeIncomingValue(unsigned Idx, bool DeletePHIIfEmpty) {
@@ -190,10 +186,6 @@ LandingPadInst::LandingPadInst(const LandingPadInst &LP)
   setCleanup(LP.isCleanup());
 }
 
-LandingPadInst::~LandingPadInst() {
-  dropHungoffUses();
-}
-
 LandingPadInst *LandingPadInst::Create(Type *RetTy, Value *PersonalityFn,
                                        unsigned NumReservedClauses,
                                        const Twine &NameStr,
@@ -3325,10 +3317,6 @@ SwitchInst::SwitchInst(const SwitchInst &SI)
   SubclassOptionalData = SI.SubclassOptionalData;
 }
 
-SwitchInst::~SwitchInst() {
-  dropHungoffUses();
-}
-
 
 /// addCase - Add an entry to the switch instruction...
 ///
@@ -3450,10 +3438,6 @@ IndirectBrInst::IndirectBrInst(const IndirectBrInst &IBI)
   SubclassOptionalData = IBI.SubclassOptionalData;
 }
 
-IndirectBrInst::~IndirectBrInst() {
-  dropHungoffUses();
-}
-
 /// addDestination - Add a destination.
 ///
 void IndirectBrInst::addDestination(BasicBlock *DestBB) {