1 /* Test infinities convert to __float128 infinity.  Bug 77265.  */
2 /* { dg-do run } */
3 /* { dg-require-effective-target __float128 } */
4 /* { dg-require-effective-target base_quadfloat_support } */
5 /* { dg-add-options __float128 } */
6 
7 extern void abort (void);
8 extern void exit (int);
9 
10 volatile float finf = __builtin_inff ();
11 volatile double dinf = __builtin_inf ();
12 volatile long double ldinf = __builtin_infl ();
13 volatile float nfinf = -__builtin_inff ();
14 volatile double ndinf = -__builtin_inf ();
15 volatile long double nldinf = -__builtin_infl ();
16 
17 int
main(void)18 main (void)
19 {
20   volatile __float128 r;
21   r = (__float128) finf;
22   if (!__builtin_isinf (r) || __builtin_signbit (r) != 0)
23     abort ();
24   r = (__float128) dinf;
25   if (!__builtin_isinf (r) || __builtin_signbit (r) != 0)
26     abort ();
27   r = (__float128) ldinf;
28   if (!__builtin_isinf (r) || __builtin_signbit (r) != 0)
29     abort ();
30   r = (__float128) nfinf;
31   if (!__builtin_isinf (r) || __builtin_signbit (r) == 0)
32     abort ();
33   r = (__float128) ndinf;
34   if (!__builtin_isinf (r) || __builtin_signbit (r) == 0)
35     abort ();
36   r = (__float128) nldinf;
37   if (!__builtin_isinf (r) || __builtin_signbit (r) == 0)
38     abort ();
39   exit (0);
40 }
41