mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-02 08:01:11 +03:00
Disable metadata for typeid(void).
This commit is contained in:
parent
652a4b39c0
commit
b7b671ce48
1 changed files with 18 additions and 15 deletions
|
@ -302,21 +302,24 @@ void DtoResolveTypeInfo(TypeInfoDeclaration* tid)
|
||||||
|
|
||||||
tid->ir.irGlobal = irg;
|
tid->ir.irGlobal = irg;
|
||||||
|
|
||||||
// Add some metadata for use by optimization passes.
|
// don't do this for void or llvm will crash
|
||||||
std::string metaname = std::string(TD_PREFIX) + mangle;
|
if (tid->tinfo->ty != Tvoid) {
|
||||||
llvm::NamedMDNode* meta = gIR->module->getNamedMetadata(metaname);
|
// Add some metadata for use by optimization passes.
|
||||||
// Don't generate metadata for non-concrete types
|
std::string metaname = std::string(TD_PREFIX) + mangle;
|
||||||
// (such as tuple types, slice types, typeof(expr), etc.)
|
llvm::NamedMDNode* meta = gIR->module->getNamedMetadata(metaname);
|
||||||
if (!meta && tid->tinfo->toBasetype()->ty < Terror) {
|
// Don't generate metadata for non-concrete types
|
||||||
// Construct the fields
|
// (such as tuple types, slice types, typeof(expr), etc.)
|
||||||
MDNodeField* mdVals[TD_NumFields];
|
if (!meta && tid->tinfo->toBasetype()->ty < Terror) {
|
||||||
if (TD_Confirm >= 0)
|
// Construct the fields
|
||||||
mdVals[TD_Confirm] = llvm::cast<MDNodeField>(irg->value);
|
MDNodeField* mdVals[TD_NumFields];
|
||||||
mdVals[TD_Type] = llvm::UndefValue::get(DtoType(tid->tinfo));
|
if (TD_Confirm >= 0)
|
||||||
// Construct the metadata
|
mdVals[TD_Confirm] = llvm::cast<MDNodeField>(irg->value);
|
||||||
llvm::MetadataBase* metadata = gIR->context().getMDNode(mdVals, TD_NumFields);
|
mdVals[TD_Type] = llvm::UndefValue::get(DtoType(tid->tinfo));
|
||||||
// Insert it into the module
|
// Construct the metadata
|
||||||
llvm::NamedMDNode::Create(metaname, &metadata, 1, gIR->module);
|
llvm::MetadataBase* metadata = gIR->context().getMDNode(mdVals, TD_NumFields);
|
||||||
|
// Insert it into the module
|
||||||
|
llvm::NamedMDNode::Create(metaname, &metadata, 1, gIR->module);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DtoDeclareTypeInfo(tid);
|
DtoDeclareTypeInfo(tid);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue