modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20020510-1.c (about) 1 /* Copyright (C) 2002 Free Software Foundation. 2 3 Test that optimizing ((c>=1) && (c<=127)) into (signed char)c < 0 4 doesn't cause any problems for the compiler and behaves correctly. 5 6 Written by Roger Sayle, 8th May 2002. */ 7 8 #include <limits.h> 9 10 extern void abort (void); 11 12 void 13 testc (unsigned char c, int ok) 14 { 15 if ((c>=1) && (c<=SCHAR_MAX)) 16 { 17 if (!ok) abort (); 18 } 19 else 20 if (ok) abort (); 21 } 22 23 void 24 tests (unsigned short s, int ok) 25 { 26 if ((s>=1) && (s<=SHRT_MAX)) 27 { 28 if (!ok) abort (); 29 } 30 else 31 if (ok) abort (); 32 } 33 34 void 35 testi (unsigned int i, int ok) 36 { 37 if ((i>=1) && (i<=INT_MAX)) 38 { 39 if (!ok) abort (); 40 } 41 else 42 if (ok) abort (); 43 } 44 45 void 46 testl (unsigned long l, int ok) 47 { 48 if ((l>=1) && (l<=LONG_MAX)) 49 { 50 if (!ok) abort (); 51 } 52 else 53 if (ok) abort (); 54 } 55 56 int 57 main () 58 { 59 testc (0, 0); 60 testc (1, 1); 61 testc (SCHAR_MAX, 1); 62 testc (SCHAR_MAX+1, 0); 63 testc (UCHAR_MAX, 0); 64 65 tests (0, 0); 66 tests (1, 1); 67 tests (SHRT_MAX, 1); 68 tests (SHRT_MAX+1, 0); 69 tests (USHRT_MAX, 0); 70 71 testi (0, 0); 72 testi (1, 1); 73 testi (INT_MAX, 1); 74 testi (INT_MAX+1U, 0); 75 testi (UINT_MAX, 0); 76 77 testl (0, 0); 78 testl (1, 1); 79 testl (LONG_MAX, 1); 80 testl (LONG_MAX+1UL, 0); 81 testl (ULONG_MAX, 0); 82 83 return 0; 84 } 85