|
65 | 65 | #define crt_copysign(x, y) __builtin_copysign((x), (y))
|
66 | 66 | #define crt_copysignf(x, y) __builtin_copysignf((x), (y))
|
67 | 67 | #define crt_copysignl(x, y) __builtin_copysignl((x), (y))
|
68 |
| -#if __has_builtin(__builtin_copysignf128) |
| 68 | +// We define __has_builtin to always return 0 for GCC versions below 10, |
| 69 | +// but __builtin_copysignf128 is available since version 7. |
| 70 | +#if __has_builtin(__builtin_copysignf128) || \ |
| 71 | + (defined(__GNUC__) && __GNUC__ >= 7) |
69 | 72 | #define crt_copysignf128(x, y) __builtin_copysignf128((x), (y))
|
70 |
| -#elif __has_builtin(__builtin_copysignq) || (defined(__GNUC__) && __GNUC__ >= 7) |
| 73 | +#elif __has_builtin(__builtin_copysignq) |
71 | 74 | #define crt_copysignf128(x, y) __builtin_copysignq((x), (y))
|
72 | 75 | #endif
|
73 | 76 | #endif
|
|
80 | 83 | #define crt_fabs(x) __builtin_fabs((x))
|
81 | 84 | #define crt_fabsf(x) __builtin_fabsf((x))
|
82 | 85 | #define crt_fabsl(x) __builtin_fabsl((x))
|
83 |
| -#if __has_builtin(__builtin_fabsf128) |
| 86 | +// We define __has_builtin to always return 0 for GCC versions below 10, |
| 87 | +// but __builtin_fabsf128 is available since version 7. |
| 88 | +#if __has_builtin(__builtin_fabsf128) || (defined(__GNUC__) && __GNUC__ >= 7) |
84 | 89 | #define crt_fabsf128(x) __builtin_fabsf128((x))
|
85 |
| -#elif __has_builtin(__builtin_fabsq) || (defined(__GNUC__) && __GNUC__ >= 7) |
| 90 | +#elif __has_builtin(__builtin_fabsq) |
86 | 91 | #define crt_fabsf128(x) __builtin_fabsq((x))
|
87 | 92 | #endif
|
88 | 93 | #endif
|
|
0 commit comments