diff options
author | Devang Patel <dpatel@apple.com> | 2009-07-29 17:16:17 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-07-29 17:16:17 +0000 |
commit | 28bc9d88260a3e153ead4311c9129e3d3ad07736 (patch) | |
tree | 9766b258ed5ad960f24c6ad1ac54b93f6cff9fb1 /include/llvm/Metadata.h | |
parent | 4baffeb6be3a224f7adadbee17512ded22610fd0 (diff) | |
download | llvm-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.h | 9 |
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]; |