/* { dg-options "-O2 -fdump-tree-optimized" } */

unsigned f1(unsigned i, unsigned j) {
  if (j != i) __builtin_unreachable();
  return __builtin_sub_overflow_p(i, j, (unsigned)0);
}

unsigned f2(unsigned i, unsigned j) {
  if (j > i) __builtin_unreachable();
  return __builtin_sub_overflow_p(i, j, (unsigned)0);
}

unsigned f3(unsigned i, unsigned j) {
  if (j >= i) __builtin_unreachable();
  return __builtin_sub_overflow_p(i, j, (unsigned)0);
}

unsigned f4(unsigned i, unsigned j) {
  if (j <= i) __builtin_unreachable();
  return __builtin_sub_overflow_p(i, j, (unsigned)0);
}

/* { dg-final { scan-tree-dump-times "return 0" 3 optimized } } */
/* { dg-final { scan-tree-dump-times "return 1" 1 optimized } } */
/* { dg-final { scan-tree-dump-not "SUB_OVERFLOW" optimized } } */
/* { dg-final { scan-tree-dump-not "IMAGPART_EXPR" optimized } } */