Moved MachineBasicBlock deconstructor to cpp file and removed it from LeakDetector to fix memory leak bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13718 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/CodeGen/MachineBasicBlock.h b/include/llvm/CodeGen/MachineBasicBlock.h
index 4dfda90..3dee00d 100644
--- a/include/llvm/CodeGen/MachineBasicBlock.h
+++ b/include/llvm/CodeGen/MachineBasicBlock.h
@@ -71,7 +71,8 @@
                                                 Number(-1), Parent(0) {
     Insts.parent = this;
   }
-  ~MachineBasicBlock() {}
+
+  ~MachineBasicBlock();
   
   /// getBasicBlock - Return the LLVM basic block that this instance
   /// corresponded to originally.
diff --git a/include/llvm/CodeGen/MachineFunction.h b/include/llvm/CodeGen/MachineFunction.h
index dcec822..e1c1986 100644
--- a/include/llvm/CodeGen/MachineFunction.h
+++ b/include/llvm/CodeGen/MachineFunction.h
@@ -28,10 +28,10 @@
 class ilist_traits<MachineBasicBlock> {
   // this is only set by the MachineFunction owning the ilist
   friend class MachineFunction;
-  MachineFunction* parent;
+  MachineFunction* Parent;
   
 public:
-  ilist_traits<MachineBasicBlock>() : parent(0) { }
+  ilist_traits<MachineBasicBlock>() : Parent(0) { }
   
   static MachineBasicBlock* getPrev(MachineBasicBlock* N) { return N->Prev; }
   static MachineBasicBlock* getNext(MachineBasicBlock* N) { return N->Next; }
@@ -68,7 +68,7 @@
   const TargetMachine &Target;
 
   // List of machine basic blocks in function
-  iplist<MachineBasicBlock> BasicBlocks;
+  ilist<MachineBasicBlock> BasicBlocks;
 
   // Keeping track of mapping from SSA values to registers
   SSARegMap *SSARegMapping;
@@ -145,7 +145,7 @@
   static MachineFunction& get(const Function *F);
 
   // Provide accessors for the MachineBasicBlock list...
-  typedef iplist<MachineBasicBlock> BasicBlockListType;
+  typedef ilist<MachineBasicBlock> BasicBlockListType;
   typedef BasicBlockListType::iterator iterator;
   typedef BasicBlockListType::const_iterator const_iterator;
   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
diff --git a/lib/CodeGen/MachineBasicBlock.cpp b/lib/CodeGen/MachineBasicBlock.cpp
index c0b144d..c72b247 100644
--- a/lib/CodeGen/MachineBasicBlock.cpp
+++ b/lib/CodeGen/MachineBasicBlock.cpp
@@ -20,14 +20,20 @@
 #include "Support/LeakDetector.h"
 using namespace llvm;
 
+MachineBasicBlock::~MachineBasicBlock() {
+  LeakDetector::removeGarbageObject(this);
+}
+  
+
+
 // MBBs start out as #-1. When a MBB is added to a MachineFunction, it 
 // gets the next available unique MBB number. If it is removed from a
 // MachineFunction, it goes back to being #-1.
 void ilist_traits<MachineBasicBlock>::addNodeToList (MachineBasicBlock* N)
 {
   assert(N->Parent == 0 && "machine instruction already in a basic block");
-  N->Parent = parent;
-  N->Number = parent->getNextMBBNumber();
+  N->Parent = Parent;
+  N->Number = Parent->getNextMBBNumber();
   LeakDetector::removeGarbageObject(N);
   
 
diff --git a/lib/CodeGen/MachineFunction.cpp b/lib/CodeGen/MachineFunction.cpp
index a3e9211..54149c3 100644
--- a/lib/CodeGen/MachineFunction.cpp
+++ b/lib/CodeGen/MachineFunction.cpp
@@ -98,9 +98,9 @@
     ilist_iterator<MachineBasicBlock> first,
     ilist_iterator<MachineBasicBlock> last)
 {
-    if (parent != toList.parent)
+    if (Parent != toList.Parent)
         for (; first != last; ++first)
-            first->Parent = toList.parent;
+            first->Parent = toList.Parent;
 }
 
 MachineFunction::MachineFunction(const Function *F,
@@ -110,7 +110,7 @@
   MFInfo = new MachineFunctionInfo(*this);
   FrameInfo = new MachineFrameInfo();
   ConstantPool = new MachineConstantPool();
-  BasicBlocks.parent = this;
+  BasicBlocks.Parent = this;
 }
 
 MachineFunction::~MachineFunction() {