modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/vrp-6.c (about)

     1  /* { dg-require-effective-target int32plus } */
     2  #include <limits.h>
     3  
     4  extern void exit (int);
     5  extern void abort ();
     6  
     7  void test01(unsigned int a, unsigned int b)
     8  {
     9    if (a < 5)
    10      abort();
    11    if (b < 5)
    12      abort();
    13    if (a - b != 5)
    14      abort();
    15  }
    16  
    17  void test02(unsigned int a, unsigned int b)
    18  {
    19    if (a >= 12)
    20      if (b > 15)
    21        if (a - b < UINT_MAX - 15U)
    22  	abort ();
    23  }
    24  
    25  int main(int argc, char *argv[])
    26  {
    27    unsigned x = 0x80000000;
    28    test01(x + 5, x);
    29    test02(14, 16);
    30    exit (0);
    31  }
    32  
    33  
    34