summaryrefslogtreecommitdiffstats
path: root/llvm/tools
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools')
-rw-r--r--llvm/tools/lli/RecordingMemoryManager.cpp11
-rw-r--r--llvm/tools/lli/RecordingMemoryManager.h2
2 files changed, 12 insertions, 1 deletions
diff --git a/llvm/tools/lli/RecordingMemoryManager.cpp b/llvm/tools/lli/RecordingMemoryManager.cpp
index 75cb9781306..d9715e1a038 100644
--- a/llvm/tools/lli/RecordingMemoryManager.cpp
+++ b/llvm/tools/lli/RecordingMemoryManager.cpp
@@ -15,6 +15,17 @@
#include "RecordingMemoryManager.h"
using namespace llvm;
+RecordingMemoryManager::~RecordingMemoryManager() {
+ for (SmallVectorImpl<Allocation>::iterator
+ I = AllocatedCodeMem.begin(), E = AllocatedCodeMem.end();
+ I != E; ++I)
+ free(I->first.base());
+ for (SmallVectorImpl<Allocation>::iterator
+ I = AllocatedDataMem.begin(), E = AllocatedDataMem.end();
+ I != E; ++I)
+ free(I->first.base());
+}
+
uint8_t *RecordingMemoryManager::
allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID) {
// The recording memory manager is just a local copy of the remote target.
diff --git a/llvm/tools/lli/RecordingMemoryManager.h b/llvm/tools/lli/RecordingMemoryManager.h
index 20fd0c2e6ed..85bf4e14436 100644
--- a/llvm/tools/lli/RecordingMemoryManager.h
+++ b/llvm/tools/lli/RecordingMemoryManager.h
@@ -33,7 +33,7 @@ private:
public:
RecordingMemoryManager() {}
- virtual ~RecordingMemoryManager() {}
+ virtual ~RecordingMemoryManager();
typedef SmallVectorImpl<Allocation>::const_iterator const_data_iterator;
typedef SmallVectorImpl<Allocation>::const_iterator const_code_iterator;
OpenPOWER on IntegriCloud