https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26388
--- Comment #18 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Martin Sebor from comment #17) > The quoted text allows an implementation to to merge calls made by two or > more new expressions to the underlying allocation function (operator new). > It can call it just once but it's can't avoid calling it altogether. Yes it can: "allowed to omit a call", "the storage is instead provided by the implementation". > There is no such a permission for calls to the allocation function itself. Ahhh, now I remember thinking that they had messed up by specifying it only for new expressions, which forced them to introduce a builtin in llvm to differentiate calls to operator new coming from new expressions and direct ones (for instance by the allocator)... Though of course that appears to have been a voluntary change between N3537 and N3664, I found on the Bristol wiki this single remark "Better to have the merging apply only to new-expressions and not to explicit calls to operator new()" without justification. Maybe I should ask CWG what the reason was.