annotate gcc/testsuite/c-c++-common/dfp/pr39034.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-options "-O" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 /* DFP TR 24732 == WG14 / N1176, N1312 */
kono
parents:
diff changeset
5 /* Based on a test from Fred Tydeman. */
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 #include "dfp-dbg.h"
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 /* Test runtime computations. */
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 void
kono
parents:
diff changeset
12 runtime32 (void)
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 volatile float v1 = 28.f, v2 = 3.f, v3 = 9.f, v4 = 31.f, v5 = 3.f, v6 = 10.f;
kono
parents:
diff changeset
15 float b32 = (float)((v1/v2-v3) - (v4/v5-v6));
kono
parents:
diff changeset
16 _Decimal32 d32 = (float)((v1/v2-v3) - (v4/v5-v6));
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 if (b32)
kono
parents:
diff changeset
19 FAILURE
kono
parents:
diff changeset
20 if (d32)
kono
parents:
diff changeset
21 FAILURE
kono
parents:
diff changeset
22 }
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 void
kono
parents:
diff changeset
25 runtime64 (void)
kono
parents:
diff changeset
26 {
kono
parents:
diff changeset
27 volatile double v1 = 28., v2 = 3., v3 = 9., v4 = 31., v5 = 3., v6 = 10.;
kono
parents:
diff changeset
28 double b64 = (double)((v1/v2-v3) - (v4/v5-v6));
kono
parents:
diff changeset
29 _Decimal64 d64 = (double)((v1/v2-v3) - (v4/v5-v6));
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 if (b64)
kono
parents:
diff changeset
32 FAILURE
kono
parents:
diff changeset
33 if (d64)
kono
parents:
diff changeset
34 FAILURE
kono
parents:
diff changeset
35 }
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 void
kono
parents:
diff changeset
38 runtime128 (void)
kono
parents:
diff changeset
39 {
kono
parents:
diff changeset
40 volatile long double v1 = 28.l, v2 = 3.l, v3 = 9.l,
kono
parents:
diff changeset
41 v4 = 31.l, v5 = 3.l, v6 = 10.l;
kono
parents:
diff changeset
42 long double b128 = (long double)((v1/v2-v3) - (v4/v5-v6));
kono
parents:
diff changeset
43 _Decimal128 d128 = (long double)((v1/v2-v3) - (v4/v5-v6));
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 if (b128)
kono
parents:
diff changeset
46 FAILURE
kono
parents:
diff changeset
47 if (d128)
kono
parents:
diff changeset
48 FAILURE
kono
parents:
diff changeset
49 }
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 /* Test constant folding. */
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 void
kono
parents:
diff changeset
54 fold32 (void)
kono
parents:
diff changeset
55 {
kono
parents:
diff changeset
56 double d32 = (float)((28.f/3.f-9.f) - (31.f/3.f-10.f));
kono
parents:
diff changeset
57 _Decimal32 b32 = (float)((28.f/3.f-9.f) - (31.f/3.f-10.f));
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 if (b32)
kono
parents:
diff changeset
60 FAILURE
kono
parents:
diff changeset
61 if (d32)
kono
parents:
diff changeset
62 FAILURE
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 void
kono
parents:
diff changeset
66 fold64 (void)
kono
parents:
diff changeset
67 {
kono
parents:
diff changeset
68 double b64 = (double)((28./3.-9.) - (31./3.-10.));
kono
parents:
diff changeset
69 _Decimal64 d64 = (double)((28./3.-9.) - (31./3.-10.));
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 if (b64)
kono
parents:
diff changeset
72 FAILURE
kono
parents:
diff changeset
73 if (d64)
kono
parents:
diff changeset
74 FAILURE
kono
parents:
diff changeset
75 }
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 void
kono
parents:
diff changeset
78 fold128 (void)
kono
parents:
diff changeset
79 {
kono
parents:
diff changeset
80 long double b128 = (long double)((28./3.-9.) - (31./3.-10.));
kono
parents:
diff changeset
81 _Decimal128 d128 = (long double)((28./3.-9.) - (31./3.-10.));
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 if (b128)
kono
parents:
diff changeset
84 FAILURE
kono
parents:
diff changeset
85 if (d128)
kono
parents:
diff changeset
86 FAILURE
kono
parents:
diff changeset
87 }
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 int
kono
parents:
diff changeset
90 main ()
kono
parents:
diff changeset
91 {
kono
parents:
diff changeset
92 runtime32 ();
kono
parents:
diff changeset
93 runtime64 ();
kono
parents:
diff changeset
94 runtime128 ();
kono
parents:
diff changeset
95 fold32 ();
kono
parents:
diff changeset
96 fold64 ();
kono
parents:
diff changeset
97 fold128 ();
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 FINISH
kono
parents:
diff changeset
100 }