On Tuesday, 20 June 2017 at 02:14:06 UTC, Era Scarecrow wrote:
To note, looking in compiler explorer (GDC 5.2.0), the following output is present (for the above line):
Apparently on GDC 6.3 this doesn't fail. So likely an old compiler bug.
Adding the following after the shift more or less confirms the unsigned shift is the error.
t >>= uint.sizeof*8; version(GNU) { if (t) t |= 0xffffffff_00000000L; }