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)) use_int(int c)13use_int (int c) 14 { 15 z1 = c; 16 } 17 18 static void __attribute__ ((noinline)) bar(struct S s)19bar (struct S s) 20 { 21 use_int (s.c); 22 } 23 24 25 static void __attribute__ ((noinline)) foo(struct S s)26foo (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 main(void)39main (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" } } */ 53