diff options
Diffstat (limited to 'gcc/testsuite/c-c++-common/pr109884.c')
-rw-r--r-- | gcc/testsuite/c-c++-common/pr109884.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/pr109884.c b/gcc/testsuite/c-c++-common/pr109884.c new file mode 100644 index 0000000..2625c87 --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr109884.c @@ -0,0 +1,32 @@ +/* PR c++/109884 */ +/* PowerPC doesn't define these as builtins, but macros expanding to + *f128 builtins. */ +/* { dg-do compile { target { __float128 && { { c || c++11 } && { ! powerpc*-*-* } } } } } */ +/* { dg-add-options __float128 } */ + +#ifdef __cplusplus +template <typename T, typename U> +struct is_same { + static const bool value = false; +}; + +template <typename T> +struct is_same <T, T> { + static const bool value = true; +}; +#define HAS_TYPE(E, U) static_assert (is_same <decltype (E), U>::value, "") +#else +#define HAS_TYPE(E, U) _Static_assert (_Generic (E, default : 0, U : 1), "") +#endif + +void +foo () +{ + __float128 a = 0; + HAS_TYPE (__builtin_infq (), __float128); + HAS_TYPE (__builtin_huge_valq (), __float128); + HAS_TYPE (__builtin_nanq (""), __float128); + HAS_TYPE (__builtin_nansq (""), __float128); + HAS_TYPE (__builtin_fabsq (a), __float128); + HAS_TYPE (__builtin_copysignq (a, a), __float128); +} |