1 /* Copyright (C) 2004 Free Software Foundation.
2 
3    Test for composite comparison always true/false optimization.
4 
5    Written by Paolo Bonzini, 26th May 2004.  */
6 
7 extern void link_error0 ();
8 extern void link_error1 ();
9 
10 void
test1(float x,float y)11 test1 (float x, float y)
12 {
13   if ((x==y) && (x!=y))
14     link_error0();
15 }
16 
17 void
test2(float x,float y)18 test2 (float x, float y)
19 {
20   if ((x<y) && (x>y))
21     link_error0();
22 }
23 
24 void
test3(float x,float y)25 test3 (float x, float y)
26 {
27   if ((x<y) && (y<x))
28     link_error0();
29 }
30 
31 void
test4(float x,float y)32 test4 (float x, float y)
33 {
34   if ((x==y) || (x!=y))
35     {
36     }
37   else
38     link_error1 ();
39 }
40 
41 void
test5(float x,float y)42 test5 (float x, float y)
43 {
44   if (__builtin_isunordered (x, y) || (x>=y) || (x<y))
45     {
46     }
47   else
48     link_error1 ();
49 }
50 
51 void
test6(float x,float y)52 test6 (float x, float y)
53 {
54   if (__builtin_isunordered (y, x) || (x<=y) || (y<x))
55     {
56     }
57   else
58     link_error1 ();
59 }
60 
61 void
test7(float x,float y)62 test7 (float x, float y)
63 {
64   if (__builtin_isunordered (x, y) || !__builtin_isunordered (x, y))
65     {
66     }
67   else
68     link_error1 ();
69 }
70 
71 void
all_tests(float x,float y)72 all_tests (float x, float y)
73 {
74   test1 (x, y);
75   test2 (x, y);
76   test3 (x, y);
77   test4 (x, y);
78   test5 (x, y);
79   test6 (x, y);
80   test7 (x, y);
81 }
82 
83 int
main()84 main ()
85 {
86   all_tests (0, 0);
87   all_tests (1, 2);
88   all_tests (4, 3);
89 
90   return 0;
91 }
92 
93 #ifndef __OPTIMIZE__
link_error0()94 void link_error0() {}
link_error1()95 void link_error1() {}
96 #endif /* ! __OPTIMIZE__ */
97 
98