Mercurial > projects > ldc
comparison gen/typinf.cpp @ 1555:ed0cffe895ec
use the new NamedMDNode class
this will need a LLVM >= r77619
author | Benjamin Kramer <benny.kra@gmail.com> |
---|---|
date | Thu, 30 Jul 2009 20:54:03 +0200 |
parents | d6e8d5db259f |
children | d11aeae19b95 |
comparison
equal
deleted
inserted
replaced
1554:d6e8d5db259f | 1555:ed0cffe895ec |
---|---|
302 | 302 |
303 tid->ir.irGlobal = irg; | 303 tid->ir.irGlobal = irg; |
304 | 304 |
305 // Add some metadata for use by optimization passes. | 305 // Add some metadata for use by optimization passes. |
306 std::string metaname = std::string(TD_PREFIX) + mangle; | 306 std::string metaname = std::string(TD_PREFIX) + mangle; |
307 LLGlobalVariable* meta = gIR->module->getGlobalVariable(metaname); | 307 llvm::NamedMDNode* meta = gIR->module->getNamedMetadata(metaname); |
308 // Don't generate metadata for non-concrete types | 308 // Don't generate metadata for non-concrete types |
309 // (such as tuple types, slice types, typeof(expr), etc.) | 309 // (such as tuple types, slice types, typeof(expr), etc.) |
310 if (!meta && tid->tinfo->toBasetype()->ty < Terror) { | 310 if (!meta && tid->tinfo->toBasetype()->ty < Terror) { |
311 // Construct the fields | 311 // Construct the fields |
312 MDNodeField* mdVals[TD_NumFields]; | 312 MDNodeField* mdVals[TD_NumFields]; |
313 if (TD_Confirm >= 0) | 313 if (TD_Confirm >= 0) |
314 mdVals[TD_Confirm] = llvm::cast<MDNodeField>(irg->value); | 314 mdVals[TD_Confirm] = llvm::cast<MDNodeField>(irg->value); |
315 mdVals[TD_Type] = llvm::UndefValue::get(DtoType(tid->tinfo)); | 315 mdVals[TD_Type] = llvm::UndefValue::get(DtoType(tid->tinfo)); |
316 // Construct the metadata | 316 // Construct the metadata |
317 llvm::MDNode* metadata = gIR->context().getMDNode(mdVals, TD_NumFields); | 317 llvm::MetadataBase* metadata = gIR->context().getMDNode(mdVals, TD_NumFields); |
318 // Insert it into the module | 318 // Insert it into the module |
319 new llvm::GlobalVariable(*gIR->module, metadata->getType(), true, | 319 llvm::NamedMDNode::Create(metaname, &metadata, 1, gIR->module); |
320 METADATA_LINKAGE_TYPE, metadata, metaname); | |
321 } | 320 } |
322 | 321 |
323 DtoDeclareTypeInfo(tid); | 322 DtoDeclareTypeInfo(tid); |
324 } | 323 } |
325 | 324 |