| /* Copyright (C) 2004 Free Software Foundation. |
| |
| Test for composite comparison always true/false optimization. |
| |
| Written by Paolo Bonzini, 26th May 2004. */ |
| |
| extern void link_error0 (); |
| extern void link_error1 (); |
| |
| void |
| test1 (float x, float y) |
| { |
| if ((x==y) && (x!=y)) |
| link_error0(); |
| } |
| |
| void |
| test2 (float x, float y) |
| { |
| if ((x<y) && (x>y)) |
| link_error0(); |
| } |
| |
| void |
| test3 (float x, float y) |
| { |
| if ((x<y) && (y<x)) |
| link_error0(); |
| } |
| |
| void |
| test4 (float x, float y) |
| { |
| if ((x==y) || (x!=y)) |
| { |
| } |
| else |
| link_error1 (); |
| } |
| |
| void |
| test5 (float x, float y) |
| { |
| if (__builtin_isunordered (x, y) || (x>=y) || (x<y)) |
| { |
| } |
| else |
| link_error1 (); |
| } |
| |
| void |
| test6 (float x, float y) |
| { |
| if (__builtin_isunordered (y, x) || (x<=y) || (y<x)) |
| { |
| } |
| else |
| link_error1 (); |
| } |
| |
| void |
| test7 (float x, float y) |
| { |
| if (__builtin_isunordered (x, y) || !__builtin_isunordered (x, y)) |
| { |
| } |
| else |
| link_error1 (); |
| } |
| |
| void |
| all_tests (float x, float y) |
| { |
| test1 (x, y); |
| test2 (x, y); |
| test3 (x, y); |
| test4 (x, y); |
| test5 (x, y); |
| test6 (x, y); |
| test7 (x, y); |
| } |
| |
| int |
| main () |
| { |
| all_tests (0, 0); |
| all_tests (1, 2); |
| all_tests (4, 3); |
| |
| return 0; |
| } |
| |
| #ifndef __OPTIMIZE__ |
| void link_error0() {} |
| void link_error1() {} |
| #endif /* ! __OPTIMIZE__ */ |
| |