| /* { dg-do run } */ |
| /* { dg-options "-O1 -funroll-loops" } */ |
| /* { dg-add-options ieee } */ |
| |
| extern void exit (int); |
| extern void abort (void); |
| |
| void |
| compare (double a, double b) |
| { |
| do |
| { |
| double s1 = __builtin_copysign ((double) 1.0, a); |
| double s2 = __builtin_copysign ((double) 1.0, b); |
| |
| if (s1 != s2) |
| abort (); |
| |
| if ((__builtin_isnan (a) != 0) != (__builtin_isnan (b) != 0)) |
| abort (); |
| |
| if ((a != b) != (__builtin_isnan (a) != 0)) |
| abort (); |
| } while (0); |
| } |
| |
| int |
| main () |
| { |
| double a = 0.0; |
| double b = 0.0; |
| _Complex double cr = __builtin_complex (a, b); |
| static _Complex double cs = __builtin_complex (0.0, 0.0); |
| |
| compare (__real__ cr, 0.0); |
| compare (__imag__ cr, 0.0); |
| compare (__real__ cs, 0.0); |
| compare (__imag__ cs, 0.0); |
| |
| exit (0); |
| } |