/* { dg-require-effective-target alloca } */ /* PR target/78439. */ enum demangle_component_type { DEMANGLE_COMPONENT_THROW_SPEC }; struct demangle_component { enum demangle_component_type type; struct { struct { struct demangle_component *left; struct demangle_component *right; }; }; }; int a, b; struct d_info { struct demangle_component *comps; int next_comp; int num_comps; struct demangle_component *subs; int num_subs; int is_conversion; }; void fn1 (int p1, struct d_info *p2) { p2->num_comps = 2 * p1; p2->next_comp = p2->num_subs = p1; p2->is_conversion = 0; } int fn3 (int *); void fn4 (struct d_info *, int); void fn2 () { int c; struct d_info d; b = 0; c = fn3 (&a); fn1 (c, &d); struct demangle_component e[d.num_comps]; struct demangle_component *f[d.num_subs]; d.comps = e; d.subs = (struct demangle_component *) f; fn4 (&d, 1); }