1 /* Verify that
2 
3    var <= 0 || ((long unsigned) (unsigned) (var - 1) < MAX_UNSIGNED_INT)
4 
5    gets folded to 1.  */
6 
7 #include <limits.h>
8 
9 void abort (void);
10 void link_failure (void);
11 
12 volatile int v;
13 
14 void
foo(int var)15 foo (int var)
16 {
17   if (!(var <= 0
18         || ((long unsigned) (unsigned) (var - 1) < UINT_MAX)))
19     link_failure ();
20 }
21 
22 int
main(int argc,char ** argv)23 main (int argc, char **argv)
24 {
25   foo (v);
26   return 0;
27 }
28 
29 #ifndef __OPTIMIZE__
30 void
link_failure(void)31 link_failure (void)
32 {
33   abort ();
34 }
35 #endif
36