https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118355
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- The problem is we no longer fold the CONST_DECL in { .type = ZERO } to { .type = 0 } and then process_init_constructor_array does: if (next != error_mark_node && (initializer_constant_valid_p (next, TREE_TYPE (next)) != null_pointer_node)) { /* Use VEC_INIT_EXPR for non-constant initialization of trailing elements with no explicit initializers. */ picflags |= PICFLAG_VEC_INIT; because the ctor isn't initializer_constant_valid_p. Then we create a VEC_INIT_EXPR and say we can't convert the argument.