Benjamin, in case you compile the toolchain yourself with mingw-builds your best option is to recompile mingw-w64 without https://sourceforge.net/p/mingw-w64/mingw-w64/ci/295fafc . That means: just remove_fpreset(); in /winpthreads/src/thread.c
Carl Am Do., 6. Mai 2021 um 17:00 Uhr schrieb Carl Kleffner <[email protected] >: > Yes, the best is to open a bug ticket. > > Am Do., 6. Mai 2021 um 16:56 Uhr schrieb Benjamin Bihler < > [email protected]>: > >> Do I need to create a bug ticket for that? Or is it now already known? :-) >> >> Thank you very much again for your help. >> >> Benjamin >> >> -----Ursprüngliche Nachricht----- >> Von: Carl Kleffner [mailto:[email protected]] >> Gesendet: Donnerstag, 6. Mai 2021 16:50 >> An: [email protected] >> Betreff: Re: [Mingw-w64-public] Setting Floating-Point Operation >> Precision Changes With Gcc 10.3 >> >> It seems that the commit "winpthreads: Call _fpreset() for new threads" >> from aug 2020 makes threads consistent with the build default, not with >> the users default instead. I would call it a bug, as this is unexpected and >> does not fit the usual recommendation to link CRT-fp8.o for the case that >> 53 bit precision is wanted by the user. The only workaround in this >> setting is to statically link winpthreads. >> >> Carl >> >> Am Do., 6. Mai 2021 um 16:33 Uhr schrieb Benjamin Bihler < >> [email protected]>: >> >> > With static builds and mingw-w64 v7 I get the following: >> > - Linking neither CRT_fp8.0 nor CRT_fp10.o : inconsistent behaviour >> > - Linking CRT_fp8.o: consistent behaviour >> > - Linking CRT_fp10.o: inconsistent behaviour >> > >> > (no change) >> > >> > With static builds and mingw-w64 v8 I get the following: >> > - Linking neither CRT_fp8.0 nor CRT_fp10.o : consistent behaviour >> > - Linking CRT_fp8.o: consistent behaviour >> > - Linking CRT_fp10.o: consistent behaviour >> > >> > (behaviour is always consistent now) >> > >> > Now of course the behaviour doesn't change anymore, when I have >> > another libwinpthread-1.dll in the path! >> > >> > This already helps me a lot. Thank you for your research. But I guess >> > that this is not perfect yet, is it? >> > >> > Benjamin >> > >> > -----Ursprüngliche Nachricht----- >> > Von: Carl Kleffner [mailto:[email protected]] >> > Gesendet: Donnerstag, 6. Mai 2021 15:59 >> > An: [email protected] >> > Betreff: Re: [Mingw-w64-public] Setting Floating-Point Operation >> > Precision Changes With Gcc 10.3 >> > >> > Please tryout a static build using `-static` and test again. >> > I also performed some tests and guess, that the consistency patch (in >> > v8 but not v7) guarantees the thread has extended precision if you use >> > libwinpthreads.dll. In case of using static build libwinpthreads.a >> > this patch would not apply. >> > >> > Am Do., 6. Mai 2021 um 15:55 Uhr schrieb Benjamin Bihler < >> > [email protected]>: >> > >> > > I have checked it, the patch 295fafc is included in v8 of mingw-w64 >> > > when building the compiler with mingw-builds. But does the patch help? >> > > Or is it actually buggy in the sense that it makes the compilation >> > > results behave different from the documentation in float.h? >> > > >> > > Benjamin >> > > >> > > -----Ursprüngliche Nachricht----- >> > > Von: Carl Kleffner [mailto:[email protected]] >> > > Gesendet: Donnerstag, 6. Mai 2021 14:38 >> > > An: [email protected] >> > > Betreff: Re: [Mingw-w64-public] Setting Floating-Point Operation >> > > Precision Changes With Gcc 10.3 >> > > >> > > You can set the FPU precision for the main thread by linking >> > > CRT_fp8.o or CRT_f10.o. Extended precision is the default for most >> > > mingw-w64 based toolchains as the math library used in mingw-w64 is >> > > based on this. The question is: what happens when a new thread is >> started?. >> > > >> > > Answer: Windows starts new threads NEVER with extended precision, >> > > because double precision is the default for MS VS Studio and the >> > > Win32 >> > API. >> > > >> > > To get consistent behaviour inside a mingw-w64 based project the FPU >> > > precision must be coded consistently by the programmer itself. Or >> > > you have to use the patch >> > > https://sourceforge.net/p/mingw-w64/mingw-w64/ci/295fafc >> > > : >> > > consistent behaviour will be guaranteed automatically at least for >> > > pthreads. I guess this patch is not included in the v8 of mingw-w64. >> > > >> > > If you are not sure what is happening use: >> > > https://github.com/jevinskie/fpudump to print out the FPU state >> > > anywhere in your program. It may only work with C, but not with C++ >> > > programs, but I'm not sure. >> > > >> > > Am Do., 6. Mai 2021 um 10:11 Uhr schrieb Benjamin Bihler < >> > > [email protected]>: >> > > >> > > > It may have to do something with the commit you have mentioned. I >> > > > am not sure... I am a compiler end user, not a compiler developer. >> > > > What does that mean? That linking CRT_fp8 or CRT_fp10 is not the >> > > > right way anymore to set >> > > > x87 precision? >> > > > >> > > > Benjamin >> > > > >> > > > -----Ursprüngliche Nachricht----- >> > > > Von: Liu Hao [mailto:[email protected]] >> > > > Gesendet: Dienstag, 4. Mai 2021 16:56 >> > > > An: [email protected]; Carl Kleffner < >> > > > [email protected]> >> > > > Betreff: Re: [Mingw-w64-public] Setting Floating-Point Operation >> > > > Precision Changes With Gcc 10.3 >> > > > >> > > > 在 2021-05-04 22:46, Carl Kleffner 写道: >> > > > > I can't reproduce this behaviour. With gcc-10.3 on msys2/ucrt64 >> > > > > as well >> > > > as >> > > > > msy2/mingw64 I get consistent results, regardless if I link >> > > > > CRT_fp10.o, CRT_fp8.o or none of them. >> > > > > >> > > > > >> > > > >> > > > Does it have something to do with >> > > > https://sourceforge.net/p/mingw-w64/mingw-w64/ci/295fafc? >> > > > >> > > > >> > > > -- >> > > > Best regards, >> > > > Liu Hao >> > > > >> > > > >> > > > _______________________________________________ >> > > > Mingw-w64-public mailing list >> > > > [email protected] >> > > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public >> > > > >> > > >> > > _______________________________________________ >> > > Mingw-w64-public mailing list >> > > [email protected] >> > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public >> > > >> > > _______________________________________________ >> > > Mingw-w64-public mailing list >> > > [email protected] >> > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public >> > > >> > >> > _______________________________________________ >> > Mingw-w64-public mailing list >> > [email protected] >> > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public >> > >> > _______________________________________________ >> > Mingw-w64-public mailing list >> > [email protected] >> > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public >> > >> >> _______________________________________________ >> Mingw-w64-public mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public >> >> _______________________________________________ >> Mingw-w64-public mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public >> > _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
