1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-cfg" } */
3 
4 #include <limits.h>
5 
6 void this_comparison_is_false (void);
7 void this_comparison_is_true (void);
8 void this_comparison_is_not_decidable (void);
9 
bla1eq(int var)10 void bla1eq (int var)
11 {
12   if (var + 10 == INT_MIN + 9)
13     this_comparison_is_false ();
14 }
15 
bla2eq(int var)16 void bla2eq (int var)
17 {
18   if (var + 10 == INT_MIN + 10)
19     this_comparison_is_not_decidable ();
20 }
21 
bla3eq(int var)22 void bla3eq (int var)
23 {
24   if (var - 10 == INT_MAX - 9)
25     this_comparison_is_false ();
26 }
27 
bla4eq(int var)28 void bla4eq (int var)
29 {
30   if (var - 10 == INT_MAX - 10)
31     this_comparison_is_not_decidable ();
32 }
33 
bla1ne(int var)34 void bla1ne (int var)
35 {
36   if (var + 10 != INT_MIN + 9)
37     this_comparison_is_true ();
38 }
39 
bla2ne(int var)40 void bla2ne (int var)
41 {
42   if (var + 10 != INT_MIN + 10)
43     this_comparison_is_not_decidable ();
44 }
45 
bla3ne(int var)46 void bla3ne (int var)
47 {
48   if (var - 10 != INT_MAX - 9)
49     this_comparison_is_true ();
50 }
51 
bla4ne(int var)52 void bla4ne (int var)
53 {
54   if (var - 10 != INT_MAX - 10)
55     this_comparison_is_not_decidable ();
56 }
57 
bla1lt(int var)58 void bla1lt (int var)
59 {
60   if (var + 10 < INT_MIN + 10)
61     this_comparison_is_false ();
62 }
63 
bla2lt(int var)64 void bla2lt (int var)
65 {
66   if (var + 10 < INT_MIN + 11)
67     this_comparison_is_not_decidable ();
68 }
69 
bla3lt(int var)70 void bla3lt (int var)
71 {
72   if (var - 10 < INT_MAX - 9)
73     this_comparison_is_true ();
74 }
75 
bla4lt(int var)76 void bla4lt (int var)
77 {
78   if (var - 10 < INT_MAX - 10)
79     this_comparison_is_not_decidable ();
80 }
81 
bla1le(int var)82 void bla1le (int var)
83 {
84   if (var + 10 <= INT_MIN + 9)
85     this_comparison_is_false ();
86 }
87 
bla2le(int var)88 void bla2le (int var)
89 {
90   if (var + 10 <= INT_MIN + 10)
91     this_comparison_is_not_decidable ();
92 }
93 
bla3le(int var)94 void bla3le (int var)
95 {
96   if (var - 10 <= INT_MAX - 10)
97     this_comparison_is_true ();
98 }
99 
bla4le(int var)100 void bla4le (int var)
101 {
102   if (var - 10 <= INT_MAX - 11)
103     this_comparison_is_not_decidable ();
104 }
105 
bla1gt(int var)106 void bla1gt (int var)
107 {
108   if (var + 10 > INT_MIN + 9)
109     this_comparison_is_true ();
110 }
111 
bla2gt(int var)112 void bla2gt (int var)
113 {
114   if (var + 10 > INT_MIN + 10)
115     this_comparison_is_not_decidable ();
116 }
117 
bla3gt(int var)118 void bla3gt (int var)
119 {
120   if (var - 10 > INT_MAX - 10)
121     this_comparison_is_false ();
122 }
123 
bla4gt(int var)124 void bla4gt (int var)
125 {
126   if (var - 10 > INT_MAX - 11)
127     this_comparison_is_not_decidable ();
128 }
129 
bla1ge(int var)130 void bla1ge (int var)
131 {
132   if (var + 10 >= INT_MIN + 10)
133     this_comparison_is_true ();
134 }
135 
bla2ge(int var)136 void bla2ge (int var)
137 {
138   if (var + 10 >= INT_MIN + 11)
139     this_comparison_is_not_decidable ();
140 }
141 
bla3ge(int var)142 void bla3ge (int var)
143 {
144   if (var - 11 >= INT_MAX - 10)
145     this_comparison_is_false ();
146 }
147 
bla4ge(int var)148 void bla4ge (int var)
149 {
150   if (var - 10 >= INT_MAX - 10)
151     this_comparison_is_not_decidable ();
152 }
153 
154 /* { dg-final { scan-tree-dump-times "this_comparison_is_false" 0 "cfg" } } */
155 /* { dg-final { scan-tree-dump-times "this_comparison_is_true" 6 "cfg" } } */
156 /* { dg-final { scan-tree-dump-times "this_comparison_is_not_decidable" 12 "cfg" } } */
157 /* { dg-final { scan-tree-dump-times "if " 12 "cfg" } } */
158 
159