summaryrefslogtreecommitdiff
path: root/include/llvm/Metadata.h
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-07-29 17:16:17 +0000
committerDevang Patel <dpatel@apple.com>2009-07-29 17:16:17 +0000
commit28bc9d88260a3e153ead4311c9129e3d3ad07736 (patch)
tree9766b258ed5ad960f24c6ad1ac54b93f6cff9fb1 /include/llvm/Metadata.h
parent4baffeb6be3a224f7adadbee17512ded22610fd0 (diff)
downloadllvm-28bc9d88260a3e153ead4311c9129e3d3ad07736.tar.gz
llvm-28bc9d88260a3e153ead4311c9129e3d3ad07736.tar.bz2
llvm-28bc9d88260a3e153ead4311c9129e3d3ad07736.tar.xz
Keep track of named mdnodes in a Module using an ilist.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77476 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Metadata.h')
-rw-r--r--include/llvm/Metadata.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/llvm/Metadata.h b/include/llvm/Metadata.h
index f341475afb..54af723b92 100644
--- a/include/llvm/Metadata.h
+++ b/include/llvm/Metadata.h
@@ -18,8 +18,10 @@
#include "llvm/Value.h"
#include "llvm/Type.h"
+#include "llvm/OperandTraits.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/ilist_node.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ValueHandle.h"
@@ -173,7 +175,11 @@ public:
//===----------------------------------------------------------------------===//
/// NamedMDNode - a tuple of other metadata.
/// NamedMDNode is always named. All NamedMDNode element has a type of metadata.
-class NamedMDNode : public MetadataBase {
+template<typename ValueSubClass, typename ItemParentClass>
+ class SymbolTableListTraits;
+
+class NamedMDNode : public MetadataBase, public ilist_node<NamedMDNode> {
+ friend class SymbolTableListTraits<NamedMDNode, Module>;
NamedMDNode(const NamedMDNode &); // DO NOT IMPLEMENT
friend class LLVMContextImpl;
@@ -201,6 +207,7 @@ public:
/// getParent - Get the module that holds this named metadata collection.
inline Module *getParent() { return Parent; }
inline const Module *getParent() const { return Parent; }
+ void setParent(Module *M) { Parent = M; }
Value *getElement(unsigned i) const {
return Node[i];