1  /* { dg-lto-do run } */
       2  /* { dg-lto-options { { -flto -O2 -finline-limit=150 } } } */
       3  
       4  [[gnu::noipa]]
       5  void hjj (unsigned int lk)
       6  {
       7      (void)lk;
       8  }
       9  void nn(int i, int n);
      10  [[gnu::noinline]]
      11  int ll(void) {
      12      return 1;
      13  }
      14  void hh(int* dest, int src)
      15  {
      16      if (!ll() && !src)
      17          hjj(100);
      18      (*dest) = 1;
      19  }
      20  void gg(int* result, int x)
      21  {
      22      if (x >= 0)
      23          return;
      24  
      25      int xx;
      26      xx = *result;
      27      hh(result, ll());
      28      if (xx >= *result)
      29          nn(xx, *result);
      30  }
      31  void nn(int i, int n) {
      32      int T8_;
      33      if (n < 0)
      34          __builtin_exit(0);
      35      T8_ = 0;
      36      gg(&T8_, i);
      37      __builtin_exit(0);
      38  }
      39  void kk(int* x, int i) {
      40      hh(x, ll());
      41      if (i < 0 || i >= *x)
      42          nn(i,*x);
      43  }
      44  int g__r_1 = 0;
      45  int main() {
      46      kk(&g__r_1, 0);
      47      return 0;
      48  }