1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-slim"  } */
3 /* { dg-require-effective-target non_strict_align } */
4 
5 struct bovid
6 {
7   float a;
8   int b;
9   struct bovid *next;
10 };
11 
12 static int
13 __attribute__((noinline))
foo(struct bovid * cow,int i)14 foo (struct bovid *cow, int i)
15 {
16   i++;
17   if (cow->next)
18     foo (cow->next, i);
19   return i;
20 }
21 
main(int argc,char * argv[])22 int main (int argc, char *argv[])
23 {
24   struct bovid cow;
25 
26   cow.a = 7.4;
27   cow.b = 6;
28   cow.next = (struct bovid *) 0;
29 
30   return foo (&cow, 0);
31 }
32 
33 /* { dg-final { scan-tree-dump-times "foo " 1 "eipa_sra"  } } */
34