https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118262
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ``` /* Protect the entire array initialization so that we can destroy the partially constructed array if an exception is thrown. But don't do this if we're assigning. */ if (flag_exceptions && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) && from_array != 2) { .... } ``` This most likely should add something like: ``` else if (from_array != 2) { /* Make sure the destructor is callable. */ if (type_build_dtor_call (type)) { tmp = build_delete (loc, ptype, base, sfk_complete_destructor, LOOKUP_NORMAL|LOOKUP_DESTRUCTOR|LOOKUP_NONVIRTUAL, 1, complain); if (tmp == error_mark_node) return error_mark_node; } } ``` Afterwards