(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
ipa/
ipa-sra-22.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fipa-sra"  } */
       3  
       4  struct W
       5  {
       6    int a, b;
       7  };
       8  
       9  union U
      10  {
      11    struct W w;
      12    long l;
      13  };
      14  
      15  struct Z
      16  {
      17    int k;
      18    union U u;
      19  };
      20  
      21  struct S
      22  {
      23    int i, j;
      24    struct Z z;
      25    char buf[64];
      26  };
      27  
      28  struct W gw;
      29  
      30  
      31  static long
      32  __attribute__((noinline))
      33  foo (struct Z z)
      34  {
      35    return z.u.l;
      36  }
      37  
      38  static long
      39  __attribute__((noinline))
      40  bar (struct S s)
      41  {
      42    if (s.i > 100)
      43      return s.z.u.w.a;
      44    else
      45      return  foo (s.z);
      46  }
      47  
      48  volatile long g;
      49  
      50  long
      51  entry (struct S *p)
      52  {
      53    struct S s = *p;
      54  
      55    return bar (s) | 2;
      56  }