Delete NamedMDSymTable while destrucing Module.
Disable copy ctor and operator= for NamedMDSymTable. Hide typedef that should be public.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93041 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/ValueSymbolTable.h b/include/llvm/ValueSymbolTable.h
index e5ea49f..060dba3 100644
--- a/include/llvm/ValueSymbolTable.h
+++ b/include/llvm/ValueSymbolTable.h
@@ -135,10 +135,11 @@
class MDSymbolTable {
/// @name Types
/// @{
-public:
+private:
/// @brief A mapping of names to metadata
typedef StringMap<NamedMDNode*> MDMap;
+public:
/// @brief An iterator over a ValueMap.
typedef MDMap::iterator iterator;
@@ -150,6 +151,8 @@
/// @{
public:
+ MDSymbolTable(const MDNode &); // DO NOT IMPLEMENT
+ void operator=(const MDSymbolTable &); // DO NOT IMPLEMENT
MDSymbolTable() : mmap(0) {}
~MDSymbolTable();
diff --git a/lib/VMCore/Module.cpp b/lib/VMCore/Module.cpp
index e25a295..03b1252 100644
--- a/lib/VMCore/Module.cpp
+++ b/lib/VMCore/Module.cpp
@@ -71,6 +71,7 @@
NamedMDList.clear();
delete ValSymTab;
delete TypeSymTab;
+ delete NamedMDSymTab;
}
/// Target endian information...
diff --git a/lib/VMCore/ValueSymbolTable.cpp b/lib/VMCore/ValueSymbolTable.cpp
index 98b042f..d30a9d6 100644
--- a/lib/VMCore/ValueSymbolTable.cpp
+++ b/lib/VMCore/ValueSymbolTable.cpp
@@ -119,3 +119,5 @@
//DEBUG(dbgs() << "\n");
}
}
+
+MDSymbolTable::~MDSymbolTable() { }