(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
pr81346-4.c
       1  /* PR tree-optimization/81346 */
       2  /* { dg-do run { target int32plus } } */
       3  /* { dg-options "-O2" } */
       4  
       5  #include "pr81346-3.c"
       6  
       7  #define INT_MAX __INT_MAX__
       8  #define INT_MIN (-__INT_MAX__ - 1)
       9  
      10  extern void abort (void);
      11  
      12  int
      13  main ()
      14  {
      15    if (__CHAR_BIT__ != 8 || __SIZEOF_INT__ != 4)
      16      return 0;
      17  #define TEST(fn1, fn2, v1, v2) \
      18    do { \
      19      int w1 = v1; int w2 = v2; \
      20      int in = 1; if (w1 > w2) { in = w1; w1 = w2; w2 = in; in = 0; } \
      21      if (w1 != INT_MIN) { if (fn1 (w1 - 1) != !in || fn2 (w1 - 1) != !in) abort (); } \
      22      if (fn1 (w1) != in || fn2 (w1) != in) abort (); \
      23      if (fn1 (w2) != in || fn2 (w2) != in) abort (); \
      24      if (w2 != INT_MAX) { if (fn1 (w2 + 1) != !in || fn2 (w2 + 1) != !in) abort (); } \
      25    } while (0)
      26  TEST (f00, f01, -2147441939, INT_MAX);
      27  TEST (f02, f03, 2147441940, INT_MAX);
      28  TEST (f04, f05, INT_MIN, 2147441939);
      29  TEST (f06, f07, INT_MIN, -2147441940);
      30  TEST (f08, f09, INT_MIN, -2147441940);
      31  TEST (f10, f11, 2147441940, INT_MAX);
      32  TEST (f12, f13, -2147441939, INT_MAX);
      33  TEST (f14, f15, INT_MIN, 2147441939);
      34  TEST (f16, f17, -224, INT_MAX);
      35  TEST (f18, f19, 240, INT_MAX);
      36  TEST (f20, f21, -239, INT_MAX);
      37  TEST (f22, f23, 225, INT_MAX);
      38  TEST (f24, f25, INT_MIN, -240);
      39  TEST (f26, f27, INT_MIN, 224);
      40  TEST (f28, f29, INT_MIN, -225);
      41  TEST (f30, f31, INT_MIN, 239);
      42  TEST (f32, f33, -239, -225);
      43  TEST (f34, f35, 225, 239);
      44  TEST (f36, f37, -225, -239);
      45  TEST (f38, f39, 239, 225);
      46  TEST (f40, f41, INT_MIN, 2147441939);
      47  TEST (f42, f43, INT_MIN, -2147441940);
      48  TEST (f44, f45, -2147441939, INT_MAX);
      49  TEST (f46, f47, 2147441940, INT_MAX);
      50  TEST (f48, f49, INT_MIN, -2147441940);
      51  TEST (f50, f51, 2147441940, INT_MAX);
      52  TEST (f52, f53, -2147441939, INT_MAX);
      53  TEST (f54, f55, INT_MIN, 2147441939);
      54  TEST (f56, f57, INT_MIN, -240);
      55  TEST (f58, f59, INT_MIN, 224);
      56  TEST (f60, f61, INT_MIN, -225);
      57  TEST (f62, f63, INT_MIN, 239);
      58  TEST (f64, f65, -224, INT_MAX);
      59  TEST (f66, f67, 240, INT_MAX);
      60  TEST (f68, f69, -239, INT_MAX);
      61  TEST (f70, f71, 225, INT_MAX);
      62  TEST (f72, f73, -239, -225);
      63  TEST (f74, f75, 225, 239);
      64  TEST (f76, f77, -225, -239);
      65  TEST (f78, f79, 239, 225);
      66  TEST (f80, f81, INT_MIN, -15);
      67  TEST (f82, f83, 15, INT_MAX);
      68  TEST (f84, f85, INT_MIN, 14);
      69  TEST (f86, f87, -14, INT_MAX);
      70  TEST (f88, f89, 15, INT_MAX);
      71  TEST (f90, f91, INT_MIN, -15);
      72  TEST (f92, f93, -14, INT_MAX);
      73  TEST (f94, f95, INT_MIN, 14);
      74  TEST (f96, f97, -14, 14);
      75  TEST (f98, f99, -14, 14);
      76  TEST (f100, f101, 14, -14);
      77  TEST (f102, f103, 14, -14);
      78    return 0;
      79  }