From a05a339c968f0f7ccaca26736f42b11a891fbaa9 Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Thu, 24 Jan 2013 14:12:12 +0000 Subject: [PATCH] lli/RecordingMemoryManager: Free allocated sections in the destructor to satisfy --vg-leak! FIXME: It could be generalized in MemoryManager. llvm-svn: 173349 --- llvm/tools/lli/RecordingMemoryManager.cpp | 11 +++++++++++ llvm/tools/lli/RecordingMemoryManager.h | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/llvm/tools/lli/RecordingMemoryManager.cpp b/llvm/tools/lli/RecordingMemoryManager.cpp index 75cb97813062..d9715e1a038c 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::iterator + I = AllocatedCodeMem.begin(), E = AllocatedCodeMem.end(); + I != E; ++I) + free(I->first.base()); + for (SmallVectorImpl::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 20fd0c2e6ed7..85bf4e144363 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::const_iterator const_data_iterator; typedef SmallVectorImpl::const_iterator const_code_iterator;