/* Test infinities convert to __float128 infinity. Bug 77265. */ /* { dg-do run } */ /* { dg-require-effective-target __float128 } */ /* { dg-require-effective-target base_quadfloat_support } */ /* { dg-add-options __float128 } */ extern void abort (void); extern void exit (int); volatile float finf = __builtin_inff (); volatile double dinf = __builtin_inf (); volatile long double ldinf = __builtin_infl (); volatile float nfinf = -__builtin_inff (); volatile double ndinf = -__builtin_inf (); volatile long double nldinf = -__builtin_infl (); int main (void) { volatile __float128 r; r = (__float128) finf; if (!__builtin_isinf (r) || __builtin_signbit (r) != 0) abort (); r = (__float128) dinf; if (!__builtin_isinf (r) || __builtin_signbit (r) != 0) abort (); r = (__float128) ldinf; if (!__builtin_isinf (r) || __builtin_signbit (r) != 0) abort (); r = (__float128) nfinf; if (!__builtin_isinf (r) || __builtin_signbit (r) == 0) abort (); r = (__float128) ndinf; if (!__builtin_isinf (r) || __builtin_signbit (r) == 0) abort (); r = (__float128) nldinf; if (!__builtin_isinf (r) || __builtin_signbit (r) == 0) abort (); exit (0); }