https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90938
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |msebor at gcc dot gnu.org --- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> --- Yes, the problem is that triviality isn't sufficient to decide whether the transformation can be enabled. I think we need to check whether the type has a trivial default ctor. Maybe like this: --- gcc/cp/decl.c (revision 272482) +++ gcc/cp/decl.c (working copy) @@ -5853,7 +5853,7 @@ reshape_init_array_1 (tree elt_type, tree max_inde break; } - if (sized_array_p && trivial_type_p (elt_type)) + if (sized_array_p && type_has_nontrivial_default_init (elt_type)) { /* Strip trailing zero-initializers from an array of a trivial type of known size. They are redundant and get in the way