https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69658
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- On this testcase, we used to call reshape_init already before, it is called from else { init = reshape_init (type, init, tf_warning_or_error); flags |= LOOKUP_NO_NARROWING; } in check_initializer, and a few lines below this it calls init_code = build_aggr_init_full_exprs (decl, init, flags); that down the line calls expand_default_init and calls reshape_init again, which is wrong from what I can understand, reshape_init should be called just once. On the other hand, on the mem-init-aggr1.C testcase, reshape_init has not been called before, and thus it probably needs to be called.