https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94314
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Martin Liška from comment #3) > Yes, I remember we discussed the topic about the user-provided new/delete > implementations. Can please Jason or Jonathan comment about the test-case? The testcase is certainly valid. The issue is we're matching new/delete pairs by means of dataflow (the new resulting pointer is fed to the delete) and identify new/delete by the decls flag. But that doesn't catch the case in this PR where there is a mismatch between the new/delete calls. Now - the question is if whether class-specific operator new/delete even have to "match" in this sense or how it's possible to "match" at all. I think the frontend has to provide some "link" between the new/delete decls to make this work (which is then quite heavy - an extra pointer in function decls) :/