mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-02-22 06:33:14 +01: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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user