From 17aa92c92a925b4a674440c7ef088c223990e854 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 21 Jul 2010 23:38:33 +0000 Subject: Make NamedMDNode not be a subclass of Value, and simplify the interface for creating and populating NamedMDNodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109061 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Module.h | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'include/llvm/Module.h') diff --git a/include/llvm/Module.h b/include/llvm/Module.h index 9b7cd4c88d..45247ec31c 100644 --- a/include/llvm/Module.h +++ b/include/llvm/Module.h @@ -28,7 +28,6 @@ namespace llvm { class FunctionType; class GVMaterializer; class LLVMContext; -class MDSymbolTable; template<> struct ilist_traits : public SymbolTableListTraits { @@ -61,7 +60,7 @@ template<> struct ilist_traits }; template<> struct ilist_traits - : public SymbolTableListTraits { + : public ilist_default_traits { // createSentinel is used to get hold of a node that marks the end of // the list... NamedMDNode *createSentinel() const { @@ -72,8 +71,8 @@ template<> struct ilist_traits NamedMDNode *provideInitialHead() const { return createSentinel(); } NamedMDNode *ensureHead(NamedMDNode*) const { return createSentinel(); } static void noteHead(NamedMDNode*, NamedMDNode*) {} - void addNodeToList(NamedMDNode *N); - void removeNodeFromList(NamedMDNode *N); + void addNodeToList(NamedMDNode *N) {} + void removeNodeFromList(NamedMDNode *N) {} private: mutable ilist_node Sentinel; }; @@ -100,7 +99,7 @@ public: /// The type for the list of aliases. typedef iplist AliasListType; /// The type for the list of named metadata. - typedef iplist NamedMDListType; + typedef ilist NamedMDListType; /// The type for the list of dependent libraries. typedef std::vector LibraryListType; @@ -151,7 +150,7 @@ private: std::string ModuleID; ///< Human readable identifier for the module std::string TargetTriple; ///< Platform target triple Module compiled on std::string DataLayout; ///< Target data description - MDSymbolTable *NamedMDSymTab; ///< NamedMDNode names. + void *NamedMDSymTab; ///< NamedMDNode names. friend class Constant; @@ -331,6 +330,10 @@ public: /// NamedMDNode with the specified name is not found. NamedMDNode *getOrInsertNamedMetadata(StringRef Name); + /// eraseNamedMetadata - Remove the given NamedMDNode from this module + /// and delete it. + void eraseNamedMetadata(NamedMDNode *NMD); + /// @} /// @name Type Accessors /// @{ @@ -417,13 +420,6 @@ public: static iplist Module::*getSublistAccess(GlobalAlias*) { return &Module::AliasList; } - /// Get the Module's list of named metadata (constant). - const NamedMDListType &getNamedMDList() const { return NamedMDList; } - /// Get the Module's list of named metadata. - NamedMDListType &getNamedMDList() { return NamedMDList; } - static iplist Module::*getSublistAccess(NamedMDNode *) { - return &Module::NamedMDList; - } /// Get the symbol table of global variable and function identifiers const ValueSymbolTable &getValueSymbolTable() const { return *ValSymTab; } /// Get the Module's symbol table of global variable and function identifiers. @@ -432,10 +428,6 @@ public: const TypeSymbolTable &getTypeSymbolTable() const { return *TypeSymTab; } /// Get the Module's symbol table of types TypeSymbolTable &getTypeSymbolTable() { return *TypeSymTab; } - /// Get the symbol table of named metadata - const MDSymbolTable &getMDSymbolTable() const { return *NamedMDSymTab; } - /// Get the Module's symbol table of named metadata - MDSymbolTable &getMDSymbolTable() { return *NamedMDSymTab; } /// @} /// @name Global Variable Iteration -- cgit v1.2.3