mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-04 09:00:33 +03:00
Tentative fix for semantic3 on imported modules and unnecessary template
function definition issue. Please test! Also change linkage of __interfaceInfos to external (same as __Class, __vtbl, __init). The other change might make this superfluous.
This commit is contained in:
parent
8e56fe69a4
commit
f675d36cfb
3 changed files with 9 additions and 4 deletions
|
@ -1371,6 +1371,11 @@ bool mustDefineSymbol(Dsymbol* s)
|
|||
{
|
||||
if (fd->isArrayOp)
|
||||
return true;
|
||||
|
||||
// we can't (and probably shouldn't?) define functions
|
||||
// that weren't semantic3'ed
|
||||
if (fd->semanticRun < 4)
|
||||
return false;
|
||||
}
|
||||
|
||||
TemplateInstance* tinst = DtoIsTemplateInstance(s);
|
||||
|
|
|
@ -811,7 +811,6 @@ int main(int argc, char** argv)
|
|||
*/
|
||||
if (!global.params.useArrayBounds && !global.params.useAssert)
|
||||
{
|
||||
#endif
|
||||
// Do pass 3 semantic analysis on all imported modules,
|
||||
// since otherwise functions in them cannot be inlined
|
||||
for (int i = 0; i < Module::amodules.dim; i++)
|
||||
|
@ -823,7 +822,6 @@ int main(int argc, char** argv)
|
|||
}
|
||||
if (global.errors)
|
||||
fatal();
|
||||
#if !IN_LLVM
|
||||
}
|
||||
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
|
@ -834,9 +832,9 @@ int main(int argc, char** argv)
|
|||
m->inlineScan();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (global.errors)
|
||||
fatal();
|
||||
#endif
|
||||
|
||||
// write module dependencies to file if requested
|
||||
if (global.params.moduleDepsFile != NULL)
|
||||
|
|
|
@ -120,7 +120,9 @@ LLGlobalVariable * IrStruct::getInterfaceArraySymbol()
|
|||
std::string name("_D");
|
||||
name.append(cd->mangle());
|
||||
name.append("16__interfaceInfosZ");
|
||||
classInterfacesArray = new llvm::GlobalVariable(array_type, true, DtoLinkage(cd), NULL, name, classInfo);
|
||||
|
||||
llvm::GlobalValue::LinkageTypes _linkage = DtoExternalLinkage(aggrdecl);
|
||||
classInterfacesArray = new llvm::GlobalVariable(array_type, true, _linkage, NULL, name, classInfo);
|
||||
|
||||
return classInterfacesArray;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue