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