1  /* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining -fno-ipa-cp"  } */
       2  /* { dg-add-options bind_pic_locally } */
       3  
       4  #define size_t long long int
       5  
       6  struct A
       7  {
       8    size_t f1, f2, f3, f4;
       9  };
      10  struct C
      11  {
      12    struct A a;
      13    size_t b;
      14  };
      15  struct C x;
      16  
      17  __attribute__((hot)) struct C callee (struct A *a, struct C *c)
      18  {
      19    c->a=(*a);
      20  
      21    if((c->b + 7) & 17)
      22     {
      23        c->a.f1 = c->a.f2 + c->a.f1;
      24        c->a.f2 = c->a.f3 - c->a.f2;
      25        c->a.f3 = c->a.f2 + c->a.f3;
      26        c->a.f4 = c->a.f2 - c->a.f4;
      27        c->b = c->a.f2;
      28  
      29      }
      30    return *c;
      31  }
      32  
      33  __attribute__((hot)) struct C caller (size_t d, size_t e, size_t f, size_t g, struct C *c)
      34  {
      35    struct A a;
      36    a.f1 = 1 + d;
      37    a.f2 = e;
      38    a.f3 = 12 + f;
      39    a.f4 = 68 + g;
      40    if (c->b > 0)
      41      return callee (&a, c);
      42    else
      43      return *c;
      44  }
      45  
      46  /* { dg-final { scan-ipa-dump "known_hot"  "inline"  } } */
      47