// { dg-do run }
// { dg-options "-O1 -ftree-vrp" }

int a, b = -1, c;
int d = 1;
static inline signed char e(signed char f, int g) { return g ? f : 0; }
static inline signed char h(signed char f) { return f < a ? f : f < a; }
static inline unsigned char i(unsigned char f, int g) { return g ? f : f > g; }
void j() {
L:
  c = e(1, i(h(b), d));
  if (b)
    return;
  goto L;
}
int main() {
  j();
  if (c != 1)
    __builtin_abort ();
  return 0;
}