https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94041

--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> ---
This turned out to be a long-standing bug with split_nonconstant_init (since
4.7, apparently): initializion of individual elements of an aggregate are not a
full-expressions, but split_nonconstant_init was making full-expressions out of
them.  My fix for PR66139 extended the use of split_nonconstant_init, and thus
the bug, to aggregate initialization of temporaries within an expression, in
which context the bug is more noticeable.

This is a tricky one, getting back into the issues with cleanups not nesting
properly that wrap_temporary_cleanups handles some of, but not this example.

Reply via email to