blob: 48db0b4f0b3a33e517a400860727d2c79458ee2a [file] [log] [blame]
Devang Patela4f43fb2009-07-28 21:49:47 +00001//===-- Metadata.cpp - Implement Metadata classes -------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file implements the Metadata classes.
11//
12//===----------------------------------------------------------------------===//
13
14#include "llvm/Metadata.h"
Devang Patel05a26fb2009-07-29 00:33:07 +000015#include "llvm/Module.h"
Devang Patel18dfdc92009-07-29 17:16:17 +000016#include "SymbolTableListTraitsImpl.h"
Devang Patela4f43fb2009-07-28 21:49:47 +000017using namespace llvm;
18
19//===----------------------------------------------------------------------===//
20//MDNode implementation
21//
22MDNode::MDNode(Value*const* Vals, unsigned NumVals)
23 : MetadataBase(Type::MetadataTy, Value::MDNodeVal) {
24 for (unsigned i = 0; i != NumVals; ++i)
25 Node.push_back(WeakVH(Vals[i]));
26}
27
28void MDNode::Profile(FoldingSetNodeID &ID) const {
29 for (const_elem_iterator I = elem_begin(), E = elem_end(); I != E; ++I)
30 ID.AddPointer(*I);
31}
Devang Patel05a26fb2009-07-29 00:33:07 +000032
33//===----------------------------------------------------------------------===//
34//NamedMDNode implementation
35//
Devang Patel4a942d02009-07-29 21:58:56 +000036NamedMDNode::NamedMDNode(const Twine &N, MetadataBase*const* MDs,
37 unsigned NumMDs, Module *ParentModule)
Benjamin Kramer5656e4f2009-07-30 15:35:55 +000038 : MetadataBase(Type::MetadataTy, Value::NamedMDNodeVal), Parent(0) {
Devang Patel18dfdc92009-07-29 17:16:17 +000039 setName(N);
Devang Patel05a26fb2009-07-29 00:33:07 +000040 for (unsigned i = 0; i != NumMDs; ++i)
41 Node.push_back(WeakMetadataVH(MDs[i]));
Devang Patel4a942d02009-07-29 21:58:56 +000042 if (ParentModule)
43 ParentModule->getNamedMDList().push_back(this);
Devang Patel05a26fb2009-07-29 00:33:07 +000044}