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