(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
pr109884.c
       1  /* PR c++/109884 */
       2  /* PowerPC doesn't define these as builtins, but macros expanding to
       3     *f128 builtins.  */
       4  /* { dg-do compile { target { __float128 && { { c || c++11 } && { ! powerpc*-*-* } } } } } */
       5  /* { dg-add-options __float128 } */
       6  
       7  #ifdef __cplusplus
       8  template <typename T, typename U>
       9  struct is_same {
      10    static const bool value = false;
      11  };
      12  
      13  template <typename T>
      14  struct is_same <T, T> {
      15    static const bool value = true;
      16  };
      17  #define HAS_TYPE(E, U) static_assert (is_same <decltype (E), U>::value, "")
      18  #else
      19  #define HAS_TYPE(E, U) _Static_assert (_Generic (E, default : 0, U : 1), "")
      20  #endif
      21  
      22  void
      23  foo ()
      24  {
      25    __float128 a = 0;
      26    HAS_TYPE (__builtin_infq (), __float128);
      27    HAS_TYPE (__builtin_huge_valq (), __float128);
      28    HAS_TYPE (__builtin_nanq (""), __float128);
      29    HAS_TYPE (__builtin_nansq (""), __float128);
      30    HAS_TYPE (__builtin_fabsq (a), __float128);
      31    HAS_TYPE (__builtin_copysignq (a, a), __float128);
      32  }