writefln("%f\n%f", cast(float)cast(int)float.infinity, float.infinity); writes --- 2147483648.000000 inf --- -fdump-tree-original --- writefln ({.length=5, .ptr="%f\n%f"}, 2.147483647e+9, Inf); --- The same conversion at runtime produces the expected result. Is this a gdc or gcc bug or is this expected?