https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96565
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization CC| |jakub at gcc dot gnu.org, | |rguenth at gcc dot gnu.org --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- So we have <bb 2> : saved_stack.2_7 = __builtin_stack_save (); _1 = (long int) x_6(D); _2 = _1 + -1; _13 = (sizetype) _2; _4 = (sizetype) x_6(D); _5 = (bitsizetype) _4; _14 = _5 * 8; arr.1_19 = __builtin_alloca_with_align (_4, 8); (*arr.1_19)[0] = 0; _12 = g (); if (_12 != 0) goto <bb 3>; [INV] else goto <bb 4>; [INV] <bb 3> : abort (); <bb 4> : __builtin_stack_restore (saved_stack.2_7); return; I guess the "usual" way of dealing with this would be to have CLOBBERs for all VLAs before the __builtin_stack_restore.