http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19476
--- Comment #16 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Marc Glisse from comment #15) > However, note that it only optimizes the testcase from this PR if we add > #include <new> at the beginning, otherwise the implicit declaration of > operator new doesn't have its operator_new_flag set... That can (and probably should, since this flag is also used in alias analysis) be fixed with something like: --- /data/repos/gcc/newnonzero/gcc/cp/decl.c (revision 202499) +++ /data/repos/gcc/newnonzero/gcc/cp/decl.c (working copy) @@ -3799,8 +3799,8 @@ cxx_init_decl_processing (void) newtype = build_exception_variant (newtype, new_eh_spec); deltype = cp_build_type_attribute_variant (void_ftype_ptr, extvisattr); deltype = build_exception_variant (deltype, empty_except_spec); - push_cp_library_fn (NEW_EXPR, newtype, 0); - push_cp_library_fn (VEC_NEW_EXPR, newtype, 0); + DECL_IS_OPERATOR_NEW (push_cp_library_fn (NEW_EXPR, newtype, 0)) = 1; + DECL_IS_OPERATOR_NEW (push_cp_library_fn (VEC_NEW_EXPR, newtype, 0)) = 1; global_delete_fndecl = push_cp_library_fn (DELETE_EXPR, deltype, ECF_NOTHROW); push_cp_library_fn (VEC_DELETE_EXPR, deltype, ECF_NOTHROW);