[glibc/azanella/clang] x86: Do not use __builtin_isinf_sign on clang

Adhemerval Zanella azanella@sourceware.org
Thu Apr 10 18:16:14 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8bbc0864ec228c62e527a3ed5ba0301a08bdc822

commit 8bbc0864ec228c62e527a3ed5ba0301a08bdc822
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Apr 1 17:03:34 2022 -0300

    x86: Do not use __builtin_isinf_sign on clang
    
    clang does not handle pseudo normal numbers,
    
    It fixes the regression on test-ldouble-isinf when built with clang:
    
    Failure: isinf (pseudo_zero): Exception "Invalid operation" set
    Failure: isinf (pseudo_inf): Exception "Invalid operation" set
    Failure: isinf (pseudo_qnan): Exception "Invalid operation" set
    Failure: isinf (pseudo_snan): Exception "Invalid operation" set
    Failure: isinf (pseudo_unnormal): Exception "Invalid operation" set
    Failure: isinf_downward (pseudo_zero): Exception "Invalid operation" set
    Failure: isinf_downward (pseudo_inf): Exception "Invalid operation" set
    Failure: isinf_downward (pseudo_qnan): Exception "Invalid operation" set
    Failure: isinf_downward (pseudo_snan): Exception "Invalid operation" set
    Failure: isinf_downward (pseudo_unnormal): Exception "Invalid operation" set
    Failure: isinf_towardzero (pseudo_zero): Exception "Invalid operation" set
    Failure: isinf_towardzero (pseudo_inf): Exception "Invalid operation" set
    Failure: isinf_towardzero (pseudo_qnan): Exception "Invalid operation" set
    Failure: isinf_towardzero (pseudo_snan): Exception "Invalid operation" set
    Failure: isinf_towardzero (pseudo_unnormal): Exception "Invalid operation" set
    Failure: isinf_upward (pseudo_zero): Exception "Invalid operation" set
    Failure: isinf_upward (pseudo_inf): Exception "Invalid operation" set
    Failure: isinf_upward (pseudo_qnan): Exception "Invalid operation" set
    Failure: isinf_upward (pseudo_snan): Exception "Invalid operation" set
    Failure: isinf_upward (pseudo_unnormal): Exception "Invalid operation" set

Diff:
---
 math/math.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/math/math.h b/math/math.h
index a26a5c530b..bd2025b5f7 100644
--- a/math/math.h
+++ b/math/math.h
@@ -999,7 +999,8 @@ enum
     (__builtin_types_compatible_p (__typeof (x), _Float128) \
      ? __isinff128 (x) : __builtin_isinf_sign (x))
 # elif (__GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__) \
-       || __glibc_clang_prereq (3,7)
+       || __glibc_clang_prereq (3,7) \
+       && __FP_BUILTIN_DENORMAL
 #  define isinf(x) __builtin_isinf_sign (x)
 # else
 #  define isinf(x) __MATH_TG ((x), __isinf, (x))


More information about the Glibc-cvs mailing list