annotate gcc/testsuite/gcc.dg/20040219-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Testing save/restore of floating point caller-save registers, on ia64
kono
parents:
diff changeset
2 this resulted in bad code. Not all targets will use caller-save regs. */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 /* { dg-do run } */
kono
parents:
diff changeset
5 /* { dg-options "-O2" } */
kono
parents:
diff changeset
6 /* { dg-options "-O2 -minline-float-divide-max-throughput" { target ia64-*-* } } */
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 /* Testing save/restore of floating point caller-save registers on ia64. */
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 extern void abort (void);
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 double foo(double a, double b, double c)
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 return (a+b+c);
kono
parents:
diff changeset
15 }
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 int
kono
parents:
diff changeset
18 main ()
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 double f1, f2, f3, f4, f5, f6, f7, f8, f9,f10;
kono
parents:
diff changeset
21 double f11,f12,f13,f14,f15,f16,f17,f18,f19,f20;
kono
parents:
diff changeset
22 double f21,f22,f23,f24,f25,f26,f27,f28,f29,f30;
kono
parents:
diff changeset
23 double x;
kono
parents:
diff changeset
24 int i,j,k;
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 f1 = 0.1; f2 = 0.2; f3 = 0.3; f4 = 0.4; f5 = 0.5;
kono
parents:
diff changeset
27 f6 = 0.6; f7 = 0.7; f8 = 0.8; f9 = 0.9; f10 = 1.0;
kono
parents:
diff changeset
28 f11 = 1.1; f12 = 1.2; f13 = 1.3; f14 = 1.4; f15 = 1.5;
kono
parents:
diff changeset
29 f16 = 1.6; f17 = 1.7; f18 = 1.8; f19 = 1.9; f20 = 2.0;
kono
parents:
diff changeset
30 f21 = 2.1; f22 = 2.2; f23 = 2.3; f24 = 2.4; f25 = 2.5;
kono
parents:
diff changeset
31 f26 = 2.6; f27 = 2.7; f28 = 2.8; f29 = 2.9; f30 = 3.0;
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 i = (int) foo(1.0,1.0,1.0);
kono
parents:
diff changeset
34 while (i > 0) {
kono
parents:
diff changeset
35 f1 = f2 / f3 * f30;
kono
parents:
diff changeset
36 f2 = f3 / f4 * f30;
kono
parents:
diff changeset
37 f3 = f4 / f5 * f30;
kono
parents:
diff changeset
38 f4 = f5 / f6 * f30;
kono
parents:
diff changeset
39 f5 = f6 / f7 * f30;
kono
parents:
diff changeset
40 f6 = f7 / f8 * f30;
kono
parents:
diff changeset
41 f7 = f8 / f9 * f30;
kono
parents:
diff changeset
42 f8 = f9 / f10 * f30;
kono
parents:
diff changeset
43 f9 = f10 / f11 * f30;
kono
parents:
diff changeset
44 f10 = f11 / f12 * f30;
kono
parents:
diff changeset
45 f11 = f12 / f13 * f30;
kono
parents:
diff changeset
46 f12 = f13 / f14 * f25;
kono
parents:
diff changeset
47 f13 = f14 / f15 * f30;
kono
parents:
diff changeset
48 f14 = f15 / f16 * f30;
kono
parents:
diff changeset
49 f15 = f16 / f17 * f30;
kono
parents:
diff changeset
50 f16 = f17 / f18 * f30;
kono
parents:
diff changeset
51 f17 = f18 / f19 * f30;
kono
parents:
diff changeset
52 f18 = f19 / f20 * f30;
kono
parents:
diff changeset
53 f19 = f20 / f21 * f30;
kono
parents:
diff changeset
54 f20 = f21 / f22 * f20;
kono
parents:
diff changeset
55 f21 = f22 / f23 * f30;
kono
parents:
diff changeset
56 f22 = f23 / f24 * f30;
kono
parents:
diff changeset
57 f23 = f24 / f25 * f30;
kono
parents:
diff changeset
58 f24 = f25 / f26 * f30;
kono
parents:
diff changeset
59 f25 = f26 / f27 * f30;
kono
parents:
diff changeset
60 f26 = f27 / f28 * f30;
kono
parents:
diff changeset
61 f27 = f28 / f29 * f30;
kono
parents:
diff changeset
62 f28 = f29 / f30 * f30;
kono
parents:
diff changeset
63 f29 = f30 / f1 * f30;
kono
parents:
diff changeset
64 f30 = f1 / f2 * f30;
kono
parents:
diff changeset
65 x = foo(f1,f2,f3);
kono
parents:
diff changeset
66 i = i - 1;
kono
parents:
diff changeset
67 }
kono
parents:
diff changeset
68 x = (f1+f2+f3+f4+f5+f6+f7+f8+f9+f10) *
kono
parents:
diff changeset
69 (f11+f12+f13+f14+f15+f16+f17+f18+f19+f20) *
kono
parents:
diff changeset
70 (f21+f22+f23+f24+f25+f26+f27+f28+f29+f30);
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 /* Exact value is not needed, on IA64 it is massively off. */
kono
parents:
diff changeset
73 if (x < 19503.0 || x > 19504.0) abort();
kono
parents:
diff changeset
74 return 0;
kono
parents:
diff changeset
75 }