]> git.ipfire.org Git - thirdparty/glibc.git/commit
x86: Do not use __builtin_fpclassify on clang
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 1 Apr 2022 19:54:55 +0000 (16:54 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 9 Apr 2025 16:36:13 +0000 (13:36 -0300)
commitb46a10d0a1a442e58010d26ce1cf0b0b188c3f38
treea93211531fcdfbfcdb4537b660d5fa2b4b54bad2
parentaf992bb633edd4a60a540dd155a9f2790cd7d81d
x86: Do not use __builtin_fpclassify on clang

clang does not handle pseudo normal numbers, so disable the fpclassify
and isnormal builtin optimization if clang is used.  This only affect
x86, so add a new header, fp-builtin-denormal.h, which defines whether
the architecture required to disable the optimization through a new
glibc define (__FP_BUILTIN_DENORMAL).

It fixes the regression on test-ldouble-fpclassify and test-float64x-fpclassify
when built with clang:

Failure: fpclassify (pseudo_zero): Exception "Invalid operation" set
Failure: fpclassify (pseudo_inf): Exception "Invalid operation" set
Failure: fpclassify (pseudo_qnan): Exception "Invalid operation" set
Failure: fpclassify (pseudo_snan): Exception "Invalid operation" set
Failure: fpclassify (pseudo_unnormal): Exception "Invalid operation" set
Failure: fpclassify_downward (pseudo_zero): Exception "Invalid operation" set
Failure: fpclassify_downward (pseudo_inf): Exception "Invalid operation" set
Failure: fpclassify_downward (pseudo_qnan): Exception "Invalid operation" set
Failure: fpclassify_downward (pseudo_snan): Exception "Invalid operation" set
Failure: fpclassify_downward (pseudo_unnormal): Exception "Invalid operation" set
Failure: fpclassify_towardzero (pseudo_zero): Exception "Invalid operation" set
Failure: fpclassify_towardzero (pseudo_inf): Exception "Invalid operation" set
Failure: fpclassify_towardzero (pseudo_qnan): Exception "Invalid operation" set
Failure: fpclassify_towardzero (pseudo_snan): Exception "Invalid operation" set
Failure: fpclassify_towardzero (pseudo_unnormal): Exception "Invalid operation" set
Failure: fpclassify_upward (pseudo_zero): Exception "Invalid operation" set
Failure: fpclassify_upward (pseudo_inf): Exception "Invalid operation" set
Failure: fpclassify_upward (pseudo_qnan): Exception "Invalid operation" set
Failure: fpclassify_upward (pseudo_snan): Exception "Invalid operation" set
Failure: fpclassify_upward (pseudo_unnormal): Exception "Invalid operation" set
bits/fp-builtin-denormal.h [new file with mode: 0644]
math/Makefile
math/math.h
sysdeps/x86/bits/fp-builtin-denormal.h [new file with mode: 0644]