Improve conformance with the Misha spelling benchmark suite
[oota-llvm.git] / include / llvm / BasicBlock.h
index 27acba4c62a55e3d822fe97976d6f8bc633ea924..2b1c3e0eea708c3a61fc64920ac62979a72e444f 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "llvm/Instruction.h"
 #include "llvm/SymbolTableListTraits.h"
-#include "Support/ilist"
+#include "llvm/ADT/ilist"
 
 namespace llvm {
 
@@ -40,12 +40,14 @@ template <class Ptr, class USE_iterator> class PredIterator;
 
 template<> struct ilist_traits<Instruction>
   : public SymbolTableListTraits<Instruction, BasicBlock, Function> {
-  // createNode is used to create a node that marks the end of the list...
-  static Instruction *createNode();
+  // createSentinel is used to create a node that marks the end of the list...
+  static Instruction *createSentinel();
+  static void destroySentinel(Instruction *I) { delete I; }
   static iplist<Instruction> &getList(BasicBlock *BB);
 };
 
-struct BasicBlock : public Value {       // Basic blocks are data objects also
+class BasicBlock : public Value {       // Basic blocks are data objects also
+public:
   typedef iplist<Instruction> InstListType;
 private :
   InstListType InstList;
@@ -95,6 +97,18 @@ public:
   TerminatorInst *getTerminator();
   const TerminatorInst *const getTerminator() const;
   
+  /// removeFromParent - This method unlinks 'this' from the containing
+  /// function, but does not delete it.
+  ///
+  void removeFromParent();
+
+  /// eraseFromParent - This method unlinks 'this' from the containing function
+  /// and deletes it.
+  ///
+  void eraseFromParent();
+
+
+
   //===--------------------------------------------------------------------===//
   /// Instruction iterator methods
   ///
@@ -108,7 +122,7 @@ public:
   inline reverse_iterator       rend  ()       { return InstList.rend();   }
   inline const_reverse_iterator rend  () const { return InstList.rend();   }
 
-  inline unsigned                 size() const { return InstList.size();  }
+  inline size_t                   size() const { return InstList.size();  }
   inline bool                    empty() const { return InstList.empty(); }
   inline const Instruction      &front() const { return InstList.front(); }
   inline       Instruction      &front()       { return InstList.front(); }