https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63619
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- The simplest fix would be: --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -478,7 +478,7 @@ delete_sanity (tree exp, tree size, bool doing_vec, int use_global_delete, /* Deleting ptr to void is undefined behavior [expr.delete/3]. */ if (VOID_TYPE_P (TREE_TYPE (type))) { - warning (0, "deleting %qT is undefined", type); + warning (OPT_Wdelete_incomplete, "deleting %qT is undefined", type); doing_vec = 0; } Although it's possible someone would want deleting void to be an error but not deleting an incomplete type (because it's only undefined to delete an incomplete type if it has a non-trivial destructor or a custom deallocation function).