(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
ipa/
pr103227-3.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -fno-tree-fre -fno-tree-sra -fdump-tree-optimized-slim"  } */
       3  
       4  struct S
       5  {
       6    int a, b, c;
       7  };
       8  
       9  volatile int z1;
      10  int z2 = 44;
      11  
      12  void  __attribute__((noipa))
      13  use_int (int c)
      14  {
      15    z1 = c;
      16  }
      17  
      18  static void __attribute__ ((noinline))
      19  bar (struct S s)
      20  {
      21    use_int (s.c);
      22  }
      23  
      24  
      25  static void __attribute__ ((noinline))
      26  foo (struct S s)
      27  {
      28    int c = s.c;
      29    if (c != 21)
      30      use_int (c);
      31  
      32    s.c = z2;
      33    bar (s);
      34    if (s.c != 44)
      35      __builtin_abort ();
      36  }
      37  
      38  int
      39  main (void)
      40  {
      41    struct S s;
      42    s.a = 1;
      43    s.b = 64;
      44    s.c = 21;
      45    foo (s);
      46    return 0;
      47  }
      48  
      49  
      50  
      51  
      52  /* { dg-final { scan-tree-dump-not "ellide" "optimized" } } */