/* { dg-do run } */ /* { dg-options "-O2 -fno-tree-fre -fno-tree-sra -fdump-tree-optimized-slim" } */ struct S { int a, b, c; }; volatile int z1; int z2 = 44; void __attribute__((noipa)) use_int (int c) { z1 = c; } static void __attribute__ ((noinline)) bar (struct S s) { use_int (s.c); } static void __attribute__ ((noinline)) foo (struct S s) { int c = s.c; if (c != 21) use_int (c); s.c = z2; bar (s); if (s.c != 44) __builtin_abort (); } int main (void) { struct S s; s.a = 1; s.b = 64; s.c = 21; foo (s); return 0; } /* { dg-final { scan-tree-dump-not "ellide" "optimized" } } */