mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-07 16:42:34 +00:00
Always construct the BumpPtrAllocator used by CFG as an instance variable.
llvm-svn: 54429
This commit is contained in:
parent
66db7d66de
commit
e26ccf3553
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
Loading…
Reference in New Issue
Block a user