I have just now reproduced this bug in Debian Buster x86_64 using i686-w64-mingw32-gcc-win32 with -std=c99 and wine32, using the original example above.
Source file foo.c: #include <assert.h> float getfloat() { return 12345.6789f; } int main(void) { assert(12345.6789f == getfloat()); } Steps to reproduce: $ i686-w64-mingw32-gcc-win32 foo.c -std=c99 $ wine ./a.exe Assertion failed: 12345.6789f == getfloat(), file foo.c, line 3 It does not happen when I compile with gcc and run it natively on linux. It also does not happen if I compile with x86_64-w64-mingw32-gcc foo.c -std=c99. Above it was suggested that this might be some kind of expected behavior. I don't know whether that is the case (seems unlikely to me, but I don't know). Just reporting that it still happens. -Alan Beadle