https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117827
Bug ID: 117827 Summary: Incorrect destructor calls after array-new-expression Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: daniel.grunwald at gmail dot com Target Milestone: --- Created attachment 59736 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59736&action=edit Test code Starting with gcc-12, the following code is miscompiled (duplicate destructor calls, causing use-after-free): https://godbolt.org/z/3GTd4vYTj (also attached) If a C constructor throws, the previously already initialized array elements need to be destroyed; but once the array is completely initialized and the new-expression has completed, other exceptions later in the full expression should not call any C destructors.