Wiki Roadmap Timeline Tickets New Ticket Source Search Help / Guide About Trac Login

Changeset 1279:04c36605feb9

Show
Ignore:
Timestamp:
04/29/09 12:59:39 (3 years ago)
Author:
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
branch:
default
Message:

Fixed array operation codegen when used from imported templates. All array operations are now emitted with template linkage. Fixed #270 .

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • dmd/arrayop.c

    r1103 r1279  
    276276        fd = new FuncDeclaration(0, 0, Lexer::idPool(name), STCundefined, ftype); 
    277277        fd->fbody = fbody; 
    278         fd->protection = PROTprotected
     278        fd->protection = PROTpublic
    279279        fd->linkage = LINKd; 
    280280 
  • gen/llvmhelpers.cpp

    r1278 r1279  
    13531353bool mustDefineSymbol(Dsymbol* s) 
    13541354{ 
     1355    if (FuncDeclaration* fd = s->isFuncDeclaration()) 
     1356    { 
     1357        if (fd->isArrayOp) 
     1358            return true; 
     1359    } 
     1360 
    13551361    TemplateInstance* tinst = DtoIsTemplateInstance(s); 
    13561362    if (tinst) 
  • gen/tollvm.cpp

    r1242 r1279  
    276276        TypeFunction* ft = (TypeFunction*)fdecl->type; 
    277277 
    278         // array operations are always internal 
     278        // array operations are always template linkage 
    279279        if (fdecl->isArrayOp) 
    280             return llvm::GlobalValue::InternalLinkage
     280            return TEMPLATE_LINKAGE_TYPE
    281281        // intrinsics are always external 
    282282        if (fdecl->llvmInternal == LLVMintrinsic) 
Copyright © 2008, LDC Development Team.