summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-04-01 17:03:34 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2025-11-20 14:53:07 -0300
commitb0faad30d4ebdb5db764ddbca378c4c9302a1ac4 (patch)
tree1cd511b098f668c5fb4048094cadf6df1955d597
parentc92cb4f094d76f95a8b162ecfbb6e9577d7c4845 (diff)
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
-rw-r--r--math/math.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/math/math.h b/math/math.h
index 2676896c64..7a7a6b03c9 100644
--- a/math/math.h
+++ b/math/math.h
@@ -1163,7 +1163,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))