Hi. Steps to reproduce:
- configure gmplib-6.3.0 with following command line: configure ABI=64 CC=/path/to/clang-20 CFLAGS="-O3 -ffast-math -march=native -m64" --with-pic --disable-shared - make - make check Observe failure in test t-get_d: FAIL: t-get_d ============= mpn_get_d wrong, didn't get infinity nsize 1 exp 999999 sign 0 got =[00 00 00 00 00 00 F0 7F] inf got sign 0 FAIL t-get_d (exit status: 134) I tried to report it to Clang bugtracker here ( https://github.com/llvm/llvm-project/issues/148060 ) and people responded this is probably gmplib issue. I checked mpn_get_d() code and I see it crafts infinities using union and it could be UB if -ffast-math is used. Possible bug resolutions: - disallow gmplib building w/ -ffast-math. Both GCC and Clang define __FAST_MATH__ and __FINITE_MATH_ONLY__ if aggressive FP optimizations requested. - workaround mpn_gmp_d() somehow in case of aggressive FP optimizations. Thanks. Vasili _______________________________________________ gmp-bugs mailing list [email protected] https://gmplib.org/mailman/listinfo/gmp-bugs
