[Issue 11069] DMD (github HEAD) Linker Regression

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Sep 22 04:11:33 PDT 2013


http://d.puremagic.com/issues/show_bug.cgi?id=11069


Temtaime <temtaime at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |temtaime at gmail.com


--- Comment #2 from Temtaime <temtaime at gmail.com> 2013-09-22 04:11:31 PDT ---
Kenji, it's not a full solution. 
I've make test case from my project.
It's too strange test case, but as it is.

A.d:
import C;
import D;

void foo() {
    Vector2 rsm;
    readWriteVariable(rsm);
}

void main() {
}

B.d:
import D;

import std.algorithm;


void bar() {
    Vector2[] tc;
    sort(tc);
}

C.d:
import std.traits;

void readWriteVariable(T)(ref T data) {

    foreach(it; __traits(allMembers, T))
            enum vValid = mixin(`is(FunctionTypeOf!(T.` ~ it ~ `) ==
function)`);

}

D.d:
struct Matrix(T, uint _M) {
    int opCmp()(auto ref in Matrix b) const {
        return 0;
    }

    pure auto opDispatch(string s)() {
        enum L = s.length;
        Matrix!(T, L) ret;
        return ret;
    }

    pure Matrix normalized() {
        return Matrix();
    }
}

alias Matrix!(float, 2) Vector2;


Problem exists only if files compiled into single objs and then linked
together.

dmd A -c
dmd b -c
dmd c -c
dmd d -c
dmd a.obj b.obj c.obj d.obj

 Error 42: Symbol Undefined
_D1D16__T6MatrixTfVi2Z6Matrix8__xopCmpFKxS1D16__T6Ma
trixTfVi2Z6MatrixKxS1D16__T6MatrixTfVi2Z6MatrixZi
b.obj(b)
 Error 42: Symbol Undefined
_D1D16__T6MatrixTfVk8Z6Matrix8__xopCmpFKxS1D16__T6Ma
trixTfVk8Z6MatrixKxS1D16__T6MatrixTfVk8Z6MatrixZi
b.obj(b)
 Error 42: Symbol Undefined
_D1D16__T6MatrixTfVk6Z6Matrix8__xopCmpFKxS1D16__T6Ma
trixTfVk6Z6MatrixKxS1D16__T6MatrixTfVk6Z6MatrixZi
b.obj(b)
 Error 42: Symbol Undefined
_D1D16__T6MatrixTfVk9Z6Matrix8__xopCmpFKxS1D16__T6Ma
trixTfVk9Z6MatrixKxS1D16__T6MatrixTfVk9Z6MatrixZi


If something is removed from test case, then linking is ok.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list