digitalmars.D.bugs - [Issue 16295] New: REG since 2.069: undefined symbol that should be
- via Digitalmars-d-bugs (86/86) Jul 18 2016 https://issues.dlang.org/show_bug.cgi?id=16295
https://issues.dlang.org/show_bug.cgi?id=16295 Issue ID: 16295 Summary: REG since 2.069: undefined symbol that should be defined Product: D Version: D2 Hardware: x86 OS: Mac OS X Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: timothee.cour2 gmail.com out_D=/tmp/ dmd=$dmd_069_X # dmd=$dmd_068_X # dmd=$ldc_X $dmd -c -of$out_D/main.o main.d && nm $out_D/main.o | grep ' U _D4main8__' For dmd v2.071.1 and dmd v2.069, we these undefined symbols; the ones starting with _D4main8_ should not be undefined: U _D15TypeInfo_Struct6__vtblZ U _D4main8__T1AThZ1A8__T1BThZ1B5emptyMFNaNbNdNiNfZi U _D4main8__T1AThZ1A8__T1BThZ1B5frontMFNaNbNiNfZPv U _D4main8__T1AThZ1A8__T1BThZ1B8popFrontMFNaNbNiNfZv U __d_arraybounds U __d_assert U __d_assert_msg U __d_unittest eg, _D4main8__T1AThZ1A8__T1BThZ1B5frontMFNaNbNiNfZPv corresponds to: pure nothrow nogc safe void* main.A!(ubyte).A.B!(ubyte).B.front() For ldc (based on DMD v2.071.1 and LLVM 3.8.0) and dmd dmd v2.068, we get the correct undefined symbols: U _D15TypeInfo_Struct6__vtblZ U __d_arraybounds U __d_assert U __d_assert_msg U __d_unittest ---- fun.d: ---- import main; void fun(A!(ubyte) a){ } main.d: ---- module main; import fun; struct A(T) { void test() { foreach (v; this) { } } auto range() { return B!T(); } int opApply(int delegate(T)) { auto r = range; foreach (v; r) { } return 0; } struct B(T) { auto front() { void* a; return a; } property empty() { return 0; } void popFront() { } } } alias Au = A!(ubyte); --
Jul 18 2016