/* { dg-do run } */ /* { dg-options "-g -fno-ipa-icf" } */ volatile int v; int __attribute__((noipa)) get_val0 (void) {return 0;} int __attribute__((noipa)) get_val2 (void) {return 2;} struct S { int a, b, c; }; static int __attribute__((noinline)) bar (struct S s, int x, int y, int z, int i) { int r; v = s.a + s.b; /* { dg-final { gdb-test . "i+1" "3" } } */ return r; } static int __attribute__((noinline)) foo (struct S s, int i) { int r; r = bar (s, 3, 4, 5, i); return r; } int main (void) { struct S s; int i; i = get_val2 (); s.a = get_val0 (); s.b = get_val0 (); s.c = get_val0 (); int r = foo (s, i); v = r + i; return 0; }