So it's just a coincidence, that GDC, LDC x86 and also DMD x86_64doesn't fail ?
(Equality) Compareision of float/float or float/double are machine dependent (depends even on x86 on the generated code (SSE/SSE2/AVX/AVX2), rounding settings, maybe event the cpu vendor etc.).
On other platforms (ARM, etc) it could be even more weird.The General rule is not to compare floats for equality, (is 0.0==-0.0, etc.). Use a epsilon based comparision scheme instead or a wrapper around it.