https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439
--- Comment #2 from ktkachov at gcc dot gnu.org --- Reduced testcase: 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 = f; fn4 (&d, 1); } Command line to reproduce: -O2 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -mtune=cortex-a8