The UCRT implementation of scalbn/scalbnf (and presumably ldexp too, as it's an identical function) has a minor spec incompliance; it doesn't respect the rounding mode that has been set.
For most uses of scalbn, rounding isn't at play at all; rounding only makes a difference when scaling the floats out of range, for deciding between staying at DBL_MAX or going to infinity, or likewise between the smallest subnormal or going to zero. This is observed in compiler-rt's testsuite for builtins. Signed-off-by: Martin Storsjö <mar...@martin.st> --- I submitted a PR to change compiler-rt's tests to ignore this failure at https://github.com/llvm/llvm-project/pull/70776 as well, but if we consider strictness in these corner cases important enough we can certainly do this revert as well. --- mingw-w64-crt/Makefile.am | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index d94461c00..833c392b0 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -216,7 +216,6 @@ src_msvcrt_common_add_x86=\ math/x86/floor.S \ math/x86/fmod.c \ math/x86/ilogb.S math/x86/ilogbf.S \ - math/x86/ldexp.c \ math/x86/log.c \ math/x86/log1p.S math/x86/log1pf.S \ math/x86/log2.S math/x86/log2f.S \ @@ -226,7 +225,6 @@ src_msvcrt_common_add_x86=\ math/x86/remainder.S math/x86/remainderf.S \ math/x86/remquo.S math/x86/remquof.S \ math/x86/rint.c math/x86/rintf.c \ - math/x86/scalbn.S math/x86/scalbnf.S \ math/x86/sin.c \ math/x86/trunc.S math/x86/truncf.S \ \ @@ -786,10 +784,13 @@ src_libmingwex_x86=\ math/x86/exp2l.S math/x86/exp.def.h math/x86/expl.c math/x86/expm1.def.h math/x86/expm1l.c \ math/x86/fastmath.h math/x86/floorl.S \ math/x86/fmodl.c math/x86/fucom.c \ - math/x86/ilogbl.S math/x86/internal_logl.S math/x86/ldexpl.c \ + math/x86/ilogbl.S math/x86/internal_logl.S \ + math/x86/ldexp.c math/x86/ldexpl.c \ math/x86/log.def.h math/x86/log10l.S math/x86/log1pl.S math/x86/log2l.S \ math/x86/logbl.c math/x86/logl.c math/x86/nearbyintl.S math/x86/pow.def.h math/x86/powl.c \ - math/x86/remainderl.S math/x86/remquol.S math/x86/scalbnl.S math/x86/sin.def.h \ + math/x86/remainderl.S math/x86/remquol.S \ + math/x86/scalbn.S math/x86/scalbnf.S math/x86/scalbnl.S \ + math/x86/sin.def.h \ math/x86/sinl.c math/x86/sinl_internal.S math/x86/tanl.S -- 2.34.1 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public