https://issues.dlang.org/show_bug.cgi?id=20441
--- Comment #3 from Don <[email protected]> --- And here is what the optimizer produces. The problematic instruction is highlighted. 0x000055555558dbe8 <+0>: push %rbp 0x000055555558dbe9 <+1>: mov %rsp,%rbp 0x000055555558dbec <+4>: lea 0x31d6d(%rip),%rdi # 0x5555555bf960 0x000055555558dbf3 <+11>: callq 0x55555558dbdc <_moo> => 0x000055555558dbf8 <+16>: sub $0x31d66,%rax 0x000055555558dbfe <+22>: jne 0x55555558dc04 <_Dmain+28> 0x000055555558dc00 <+24>: xor %eax,%eax 0x000055555558dc02 <+26>: pop %rbp 0x000055555558dc03 <+27>: retq The mistake is that the addressing mode flag to make it RIP-relative, is missing. Instead of sub RAX, [RIP + 0x31d66] it is generating sub RAX, [0x31d66] --
