(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
ipa/
ipa-sra-27.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-ipa-sra-details"  } */
       3  
       4  struct S
       5  {
       6    short a, b, c;
       7  };
       8  
       9  extern int gc;
      10  extern int *arr;
      11  
      12  static void __attribute__((noinline))
      13  foo (struct S *p)
      14  {
      15    for (int i = 0; i < gc; i++)
      16      arr += p->b;
      17  }
      18  
      19  static void __attribute__((noinline))
      20  baz (struct S *p)
      21  {
      22    foo (p);
      23    gc = p->a + p->c;
      24  }
      25  
      26  void
      27  bar (short a, short b, short c)
      28  {
      29    struct S s;
      30    s.a = a;
      31    s.b = b;
      32    s.c = c;
      33    foo (&s);
      34    return;
      35  }
      36  
      37  void
      38  bar2 (short a, short b, short c)
      39  {
      40    struct S s;
      41    s.a = a;
      42    s.b = b;
      43    s.c = c;
      44    baz (&s);
      45    return;
      46  }
      47  
      48  /* { dg-final { scan-ipa-dump-times "Will split parameter" 2 "sra" } } */
      49