1 /* { dg-do compile } */
2 /* { dg-options "-O -fdump-tree-fre1" } */
3 
4 struct S { char a[3]; char b[5]; } s = { "abc", "defg" };
5 
6 __SIZE_TYPE__
foo(struct S s,int a,int b)7 foo (struct S s, int a, int b)
8 {
9   char *p = (char *) &s.a[0];
10   if (a)
11     p = (char *) &s.a;
12   else if (b)
13     p = (char *) &s;
14   return __builtin_strlen (p);
15 }
16 
17 __SIZE_TYPE__
bar(int a,int b)18 bar (int a, int b)
19 {
20   char *p = (char *) &s.a[0];
21   if (a)
22     p = (char *) &s.a;
23   else if (b)
24     p = (char *) &s;
25   return __builtin_strlen (p);
26 }
27 
28 /* { dg-final { scan-tree-dump-times "strlen \\\(&s" 2 "fre1" } } */
29