111
|
1 /* PR c/70093 */
|
|
2 /* { dg-do run } */
|
|
3 /* { dg-options "" } */
|
|
4 /* { dg-require-effective-target alloca } */
|
|
5
|
|
6 void
|
|
7 foo (int n)
|
|
8 {
|
|
9 struct S { int a[n]; };
|
|
10
|
|
11 struct S
|
|
12 fn (void)
|
|
13 {
|
|
14 struct S s;
|
|
15 s.a[0] = 42;
|
|
16 return s;
|
|
17 }
|
|
18
|
|
19 auto struct S
|
|
20 fn2 (void)
|
|
21 {
|
|
22 return fn ();
|
|
23 }
|
|
24
|
|
25 struct S x;
|
|
26 fn ();
|
|
27 fn2 ();
|
|
28 x = fn ();
|
|
29
|
|
30 if (x.a[0] != 42)
|
|
31 __builtin_abort ();
|
|
32
|
|
33 if (fn ().a[0] != 42)
|
|
34 __builtin_abort ();
|
|
35
|
|
36 __typeof__ (fn ()) *p = &x;
|
|
37 if (p->a[0] != 42)
|
|
38 __builtin_abort ();
|
|
39
|
|
40 if (fn2 ().a[0] != 42)
|
|
41 __builtin_abort ();
|
|
42 }
|
|
43
|
|
44 int
|
|
45 main (void)
|
|
46 {
|
|
47 foo (1);
|
|
48 }
|