Cut down from a failure in core.cpuid. With all of the build problems with druntime at the moment I'm not able to get any normal file to build on 64bits; but this is the relevant case from the runtime build. This probably needs -O -release, since it goes away if I replace 'while' with 'if'; but I haven't checked which flags are actually necessary. ============= __gshared char[48] dish; void foo() { int end = 0; while (dish[$-end-1]==0) { ++end; } } =========== src/core/cpuid.d:(.text._D4core5cpuid3fooFZv+0x9): relocation truncated to fit: R_X86_64_PC32 against symbol `_D4core5cpuid4dishG48a' defined in .data section in obj/core/cpuid.o
I can no longer reproduce this bug. I can revert the workaround, and the code still links. I presume the root cause was fixed shortly after this bug was filed.