use the new NamedMDNode class

this will need a LLVM >= r77619
This commit is contained in:
Benjamin Kramer
2009-07-30 20:54:03 +02:00
parent 66101517d7
commit e34f07505b
4 changed files with 20 additions and 21 deletions
+3 -4
View File
@@ -304,7 +304,7 @@ void DtoResolveTypeInfo(TypeInfoDeclaration* tid)
// Add some metadata for use by optimization passes.
std::string metaname = std::string(TD_PREFIX) + mangle;
LLGlobalVariable* meta = gIR->module->getGlobalVariable(metaname);
llvm::NamedMDNode* meta = gIR->module->getNamedMetadata(metaname);
// Don't generate metadata for non-concrete types
// (such as tuple types, slice types, typeof(expr), etc.)
if (!meta && tid->tinfo->toBasetype()->ty < Terror) {
@@ -314,10 +314,9 @@ void DtoResolveTypeInfo(TypeInfoDeclaration* tid)
mdVals[TD_Confirm] = llvm::cast<MDNodeField>(irg->value);
mdVals[TD_Type] = llvm::UndefValue::get(DtoType(tid->tinfo));
// Construct the metadata
llvm::MDNode* metadata = gIR->context().getMDNode(mdVals, TD_NumFields);
llvm::MetadataBase* metadata = gIR->context().getMDNode(mdVals, TD_NumFields);
// Insert it into the module
new llvm::GlobalVariable(*gIR->module, metadata->getType(), true,
METADATA_LINKAGE_TYPE, metadata, metaname);
llvm::NamedMDNode::Create(metaname, &metadata, 1, gIR->module);
}
DtoDeclareTypeInfo(tid);