1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3 /* { dg-require-effective-target alloca } */
4 
5 int y;
6 extern int foo (int, ...) __attribute__((pure));
7 
8 int
zzz(char * s1,char * s2,int len,int * q,int c)9 zzz (char *s1, char *s2, int len, int *q, int c)
10 {
11   int z = 5;
12   unsigned int i, b;
13   struct s { char a[z]; };
14   struct s x;
15   int y_tmp = 5;
16 
17   for (i = 0; i < len; i++)
18     s1[i] = s2[i];
19 
20   b = z & 0x3;
21 
22   len += (b == 0 ? 0 : 1) + z;
23 
24   *q = len;
25 
26  if (c)
27    y_tmp = foo (z, x, x) + 4;
28 
29  z = foo (z, x, x) + 4;
30  y = y_tmp;
31 
32  return  z;
33 }
34