| /* Excess precision tests. Test implicit conversions in comparisons: |
| excess precision in C11 mode. */ |
| /* { dg-do run } */ |
| /* { dg-options "-std=c11 -mfpmath=387 -fexcess-precision=standard" } */ |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| int |
| main (void) |
| { |
| float f = 0x1p63f; |
| unsigned long long int u = (1ULL << 63) + 1; |
| |
| if ((f == u) != 0) |
| abort (); |
| |
| if ((u == f) != 0) |
| abort (); |
| |
| if ((f != u) != 1) |
| abort (); |
| |
| if ((u != f) != 1) |
| abort (); |
| |
| if ((f < u) != 1) |
| abort (); |
| |
| if ((u < f) != 0) |
| abort (); |
| |
| if ((f <= u) != 1) |
| abort (); |
| |
| if ((u <= f) != 0) |
| abort (); |
| |
| if ((f > u) != 0) |
| abort (); |
| |
| if ((u > f) != 1) |
| abort (); |
| |
| if ((f >= u) != 0) |
| abort (); |
| |
| if ((u >= f) != 1) |
| abort (); |
| |
| exit (0); |
| } |