111
|
1 /* Copyright (C) 2003 Free Software Foundation.
|
|
2
|
|
3 Check that constant folding of mathematical expressions doesn't
|
|
4 break anything.
|
|
5
|
|
6 Written by Roger Sayle, 3rd August 2003. */
|
|
7
|
|
8 /* { dg-do link } */
|
|
9 /* { dg-options "-O2 -ffast-math" } */
|
|
10
|
|
11 extern void link_error(void);
|
|
12
|
|
13 void test(double x)
|
|
14 {
|
|
15 if (x+x != 2.0*x)
|
|
16 link_error ();
|
|
17 if (x+x != x*2.0)
|
|
18 link_error ();
|
|
19
|
|
20 if (x+x+x != 3.0*x)
|
|
21 link_error ();
|
|
22 if (x+x+x != x*3.0)
|
|
23 link_error ();
|
|
24
|
|
25 if ((x+x)+x != 3.0*x)
|
|
26 link_error ();
|
|
27 if ((x+x)+x != x*3.0)
|
|
28 link_error ();
|
|
29
|
|
30 if (x+(x+x) != 3.0*x)
|
|
31 link_error ();
|
|
32 if (x+(x+x) != x*3.0)
|
|
33 link_error ();
|
|
34
|
|
35 if (x+4.0*x != 5.0*x)
|
|
36 link_error ();
|
|
37 if (x+4.0*x != x*5.0)
|
|
38 link_error ();
|
|
39 if (x+x*4.0 != 5.0*x)
|
|
40 link_error ();
|
|
41 if (x+x*4.0 != x*5.0)
|
|
42 link_error ();
|
|
43 if (4.0*x+x != 5.0*x)
|
|
44 link_error ();
|
|
45 if (4.0*x+x != x*5.0)
|
|
46 link_error ();
|
|
47 if (x*4.0+x != 5.0*x)
|
|
48 link_error ();
|
|
49 if (x*4.0+x != x*5.0)
|
|
50 link_error ();
|
|
51
|
|
52 if (3.0*x + 5.0*x != 8.0*x)
|
|
53 link_error ();
|
|
54 if (3.0*x + 5.0*x != x*8.0)
|
|
55 link_error ();
|
|
56 if (x*3.0 + 5.0*x != 8.0*x)
|
|
57 link_error ();
|
|
58 if (x*3.0 + 5.0*x != x*8.0)
|
|
59 link_error ();
|
|
60 if (3.0*x + x*5.0 != 8.0*x)
|
|
61 link_error ();
|
|
62 if (3.0*x + x*5.0 != x*8.0)
|
|
63 link_error ();
|
|
64 if (x*3.0 + x*5.0 != 8.0*x)
|
|
65 link_error ();
|
|
66 if (x*3.0 + x*5.0 != x*8.0)
|
|
67 link_error ();
|
|
68 }
|
|
69
|
|
70 int main()
|
|
71 {
|
|
72 test(2.0);
|
|
73 return 0;
|
|
74 }
|
|
75
|