Daily bump.
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / excess-precision-8.c
blobc0a31ed5f4ecf12203c13378ac136d76100ac076
1 /* Excess precision tests. Test C11 semantics for conversions from
2 integers to floating point: no excess precision for either explicit
3 conversions, but excess precision for implicit conversions. */
4 /* { dg-do run } */
5 /* { dg-options "-std=c11 -mfpmath=387 -fexcess-precision=standard" } */
7 extern void abort (void);
8 extern void exit (int);
10 int
11 main (void)
13 float f = 1.0f;
14 int i;
16 i = 0x10001234;
17 if ((float) i != 0x10001240)
18 abort ();
20 i = 0x10001234;
21 i += f;
22 if (i != 0x10001235)
23 abort ();
25 i = 0x10001234;
26 i += 1.0f;
27 if (i != 0x10001235)
28 abort ();
30 i = 0x10001234;
31 i = i + f;
32 if (i != 0x10001235)
33 abort ();
35 i = 0x10001234;
36 i = i + 1.0f;
37 if (i != 0x10001235)
38 abort ();
40 i = 0x10001235;
41 i = (1 ? i : 1.0f);
42 if (i != 0x10001235)
43 abort ();
45 i = 0x10001235;
46 i = (1 ? i : f);
47 if (i != 0x10001235)
48 abort ();
50 i = 0x10001235;
51 i = (0 ? 1.0f :i);
52 if (i != 0x10001235)
53 abort ();
55 i = 0x10001235;
56 i = (0 ? f : i);
57 if (i != 0x10001235)
58 abort ();
60 exit (0);