Use optimized array operators implemented in druntime

This commit is contained in:
Alexey Prokhin
2012-02-11 15:15:28 +04:00
parent e0dc95052b
commit f2ed2e96b0
5 changed files with 31 additions and 13 deletions

View File

@@ -1562,7 +1562,7 @@ bool mustDefineSymbol(Dsymbol* s)
if (fd->semanticRun < 4)
return false;
if (fd->isArrayOp)
if (fd->isArrayOp == 1)
return true;
if (global.params.useAvailableExternally && fd->availableExternally) {

View File

@@ -33,7 +33,7 @@ static Module* getDefinedModule(Dsymbol* s)
// array operations as well
else if (FuncDeclaration* fd = s->isFuncDeclaration())
{
if (fd->isArrayOp)
if (fd->isArrayOp == 1)
return gIR->dmodule;
}
// otherwise use the symbol's module

View File

@@ -267,7 +267,7 @@ LLGlobalValue::LinkageTypes DtoLinkage(Dsymbol* sym)
if (fdecl->availableExternally && mustDefineSymbol(sym))
return llvm::GlobalValue::AvailableExternallyLinkage;
// array operations are always template linkage
if (fdecl->isArrayOp)
if (fdecl->isArrayOp == 1)
return templateLinkage;
// template instances should have weak linkage
// but only if there's a body, and it's not naked