[Issue 16295] New: REG since 2.069: undefined symbol that should be defined
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Mon Jul 18 20:40:43 PDT 2016
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 at puremagic.com
Reporter: timothee.cour2 at 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);
--
More information about the Digitalmars-d-bugs
mailing list