| /* Excess precision tests. Test C99 semantics for conversions from |
| integers to floating point: no excess precision for either explicit |
| or implicit conversions. */ |
| /* { dg-do run } */ |
| /* { dg-options "-std=c99 -mfpmath=387 -fexcess-precision=standard" } */ |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| int |
| main (void) |
| { |
| float f = 1.0f; |
| int i; |
| |
| i = 0x10001234; |
| if ((float) i != 0x10001240) |
| abort (); |
| |
| i = 0x10001234; |
| i += f; |
| if (i != 0x10001241) |
| abort (); |
| |
| i = 0x10001234; |
| i += 1.0f; |
| if (i != 0x10001241) |
| abort (); |
| |
| i = 0x10001234; |
| i = i + f; |
| if (i != 0x10001241) |
| abort (); |
| |
| i = 0x10001234; |
| i = i + 1.0f; |
| if (i != 0x10001241) |
| abort (); |
| |
| exit (0); |
| } |