]> granicus.if.org Git - clang/commitdiff
Always construct the BumpPtrAllocator used by CFG as an instance variable.
authorTed Kremenek <kremenek@apple.com>
Wed, 6 Aug 2008 22:22:32 +0000 (22:22 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 6 Aug 2008 22:22:32 +0000 (22:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54429 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/CFG.h
lib/AST/CFG.cpp

index 9f5d9d0e57a9f090fcf3195cbc9ab9579f1770dc..b9ceee083687d2da6f71d0f5260beb742628c9fd 100644 (file)
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_CFG_H
 
 #include "llvm/ADT/GraphTraits.h"
+#include "llvm/Support/Allocator.h"
 #include <list>
 #include <vector>
 #include <iosfwd>
@@ -283,9 +284,13 @@ public:
   //===--------------------------------------------------------------------===//
 
   CFG() : Entry(NULL), Exit(NULL), IndirectGotoBlock(NULL), NumBlockIDs(0), 
-          BlkExprMap(NULL), BlkEdgeSet(NULL), Allocator(NULL) {};
+          BlkExprMap(NULL), BlkEdgeSet(NULL) {};
   
   ~CFG();
+  
+  llvm::BumpPtrAllocator& getAllocator() {
+    return Alloc;
+  }
     
 private:
   CFGBlock* Entry;
@@ -308,7 +313,7 @@ private:
   void*     BlkEdgeSet;
   
   /// Alloc - An internal allocator used for BlkEdgeSet.
-  void*     Allocator;
+  llvm::BumpPtrAllocator Alloc;
   
   friend class BlockEdge;
   
index 9f87dc6adfde47747397c7a5d0f6fb1fbde607f9..ffc42bb6e1c34408cd995db104cce5ce983ca1fb 100644 (file)
@@ -1177,12 +1177,6 @@ typedef llvm::FoldingSet<PersistPairTy> BlkEdgeSetTy;
 const std::pair<CFGBlock*,CFGBlock*>*
 CFG::getBlockEdgeImpl(const CFGBlock* B1, const CFGBlock* B2) {
   
-  if (!Allocator)
-    Allocator = new llvm::BumpPtrAllocator();
-  
-  llvm::BumpPtrAllocator* Alloc =
-    static_cast<llvm::BumpPtrAllocator*>(Allocator);
-
   if (!BlkEdgeSet)
     BlkEdgeSet = new BlkEdgeSetTy();
     
@@ -1201,13 +1195,13 @@ CFG::getBlockEdgeImpl(const CFGBlock* B1, const CFGBlock* B2) {
     assert (llvm::AlignOf<BPairTy>::Alignment_LessEqual_8Bytes);
     
     // Allocate the pair, forcing an 8-byte alignment.
-    BPairTy* pair = (BPairTy*) Alloc->Allocate(sizeof(*pair), 8);
+    BPairTy* pair = (BPairTy*) Alloc.Allocate(sizeof(*pair), 8);
 
     new (pair) BPairTy(const_cast<CFGBlock*>(B1),
                        const_cast<CFGBlock*>(B2));
     
     // Allocate the meta data to store the pair in the FoldingSet.
-    PersistPairTy* ppair = (PersistPairTy*) Alloc->Allocate<PersistPairTy>();
+    PersistPairTy* ppair = (PersistPairTy*) Alloc.Allocate<PersistPairTy>();
     new (ppair) PersistPairTy(pair);
     
     p->InsertNode(ppair, InsertPos);
@@ -1225,7 +1219,6 @@ CFG::getBlockEdgeImpl(const CFGBlock* B1, const CFGBlock* B2) {
 CFG::~CFG() {
   delete reinterpret_cast<const BlkExprMapTy*>(BlkExprMap);
   delete reinterpret_cast<BlkEdgeSetTy*>(BlkEdgeSet);
-  delete reinterpret_cast<llvm::BumpPtrAllocator*> (Allocator);
 }
   
 //===----------------------------------------------------------------------===//