https://issues.dlang.org/show_bug.cgi?id=17712
Issue ID: 17712 Summary: [REG 2.074] [LINK] Undefined reference to std.conv.toChars!(10, char, 1, uint).toChars(uint) Product: D Version: D2 Hardware: All OS: Linux Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: ibuc...@gdcproject.org Reduced test (with two selective imports). --- struct Bytecode { uint data; } @trusted ctSub(U)(string format, U args) { import std.conv : to; foreach (i; format) return format~ to!string(args); return format; } struct CtContext { import std.uni : CodepointSet; CodepointSet[] charsets; string ctAtomCode(Bytecode[] ir) { string code; switch (code) { OrChar: code ~= ``; for (uint i ; i ;) code ~= ctSub(``, ir[i].data); charsets[ir[0].data].toSourceCode; break; default: assert(0); } return code; } } --- Causes link error. --- backtracking.o: In function `_D3std4conv17__T6toImplTAyaTkZ6toImplFNaNbNekkE3std5ascii10LetterCaseZAya': __main.d:(.text._D3std4conv17__T6toImplTAyaTkZ6toImplFNaNbNekkE3std5ascii10LetterCaseZAya+0x5e): undefined reference to `_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result' backtracking.o: In function `_D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa': __main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0xd): undefined reference to `_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result6lengthMFNaNbNdNiNfZm' __main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0x4f): undefined reference to `_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result5emptyMFNaNbNdNiNfZb' __main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0x5c): undefined reference to `_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result5frontMFNaNbNdNiNfZa' __main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0x9f): undefined reference to `_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result8popFrontMFNaNbNiNfZv' collect2: error: ld returned 1 exit status Error: linker exited with status 1 --- Prettified. --- backtracking.o: In function `std.conv.toImpl!(immutable(char)[], uint).toImpl(uint, uint, std.ascii.LetterCase)': __main.d:(0x5e): undefined reference to `std.conv.toChars!(10, char, 1, uint).toChars(uint)' backtracking.o: In function `std.array.array!(std.conv.toChars!(10, char, 1, uint).toChars(uint).Result).array(std.conv.toChars!(10, char, 1, uint).toChars(uint).Result)': __main.d:(0xd): undefined reference to `std.conv.toChars!(10, char, 1, uint).toChars(uint).Result.length()' __main.d:(0x4f): undefined reference to `std.conv.toChars!(10, char, 1, uint).toChars(uint).Result.empty()' __main.d:(0x5c): undefined reference to `std.conv.toChars!(10, char, 1, uint).toChars(uint).Result.front()' __main.d:(0x9f): undefined reference to `std.conv.toChars!(10, char, 1, uint).toChars(uint).Result.popFront()' collect2: error: ld returned 1 exit status Error: linker exited with status 1 --- Does not happen with 2.073. --- $ dmd-2073 backtracking.d -v 2>&1 | grep toChars.Result.popFront function std.conv.toChars!(10, char, cast(LetterCase)true, uint).toChars.Result.popFront function std.conv.toChars!(16, char, cast(LetterCase)false, uint).toChars.Result.popFront function std.conv.toChars!(16, char, cast(LetterCase)true, uint).toChars.Result.popFront function std.conv.toChars!(2, char, cast(LetterCase)true, uint).toChars.Result.popFront function std.conv.toChars!(8, char, cast(LetterCase)true, uint).toChars.Result.popFront $ dmd-2074 backtracking.d -v 2>&1 | grep toChars.Result.popFront function std.conv.toChars!(16, char, cast(LetterCase)false, uint).toChars.Result.popFront function std.conv.toChars!(16, char, cast(LetterCase)true, uint).toChars.Result.popFront function std.conv.toChars!(2, char, cast(LetterCase)true, uint).toChars.Result.popFront function std.conv.toChars!(8, char, cast(LetterCase)true, uint).toChars.Result.popFront --- However when testing with gdc, all I updated was the library, and managed to reproduce the same thing, so a change in phobos exposed this. --