public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Marc Glisse <marc.glisse@inria.fr>
To: Richard Biener <richard.guenther@gmail.com>
Cc: "Martin Liška" <mliska@suse.cz>,
	gcc-patches@gcc.gnu.org, "David Malcolm" <dmalcolm@redhat.com>,
	dominik.infuehr@theobroma-systems.com
Subject: Re: [PATCH 1/2] Come up with function_decl_type and use it in tree_function_decl.
Date: Thu, 04 Jul 2019 22:21:00 -0000	[thread overview]
Message-ID: <alpine.DEB.2.21.1907042335100.15312@stedding.saclay.inria.fr> (raw)
In-Reply-To: <9D090495-3C97-4873-B0DF-2610B478F621@gmail.com>

On Wed, 3 Jul 2019, Richard Biener wrote:

> On July 3, 2019 4:53:30 PM GMT+02:00, "Martin Liška" <mliska@suse.cz> wrote:
>> On 7/2/19 7:15 PM, Marc Glisse wrote:
>>> On Tue, 2 Jul 2019, Martin Liška wrote:
>>>
>>>> After the discussion with Richi and Nathan, I made a place in
>> tree_function_decl
>>>> and I rebased the original Dominik's patch on top of that.
>>>
>>> So, last time there were some questions about the legality of this
>> transformation. Did you change the exact set of functions on which this
>> is applied?
>>
>> Yes. I was not included in the original discussion, but I hope the
>> transformation is valid.
>> Btw. clang also removes the new/delete pairs and I guess it was the
>> original motivation of the patch.
>
> We also remove malloc/free pairs which the C standard does not explicitly allow (but also doesn't explicitly forbid). I don't think standards need to enumerate everything allowed and I don't know any explicit wording in the C++ standard that forbids this.

The C++ standard has explicit wording allowing to remove new-delete pairs 
in some circumstances (expr.new, allocator.members), so I would assume 
that other circumstances are forbidden (not that I care much, I am just 
afraid someone might).

The patch apparently has DECL_IS_OPERATOR_DELETE only on the replaceable 
global deallocation functions, not all delete operators, contrary to 
DECL_IS_OPERATOR_NEW, so the name is misleading. On the other hand, those 
seem to be the ones for which the optimization is legal (well, not quite, 
the rules are in terms of operator new, and I am not sure how well 
operator delete has to match, but close enough).

> It's only that users can override the allocation functions (but so can 
> they in C) and it was suggested we need to preserve side effects unknown 
> to the compiler.

-- 
Marc Glisse

  reply	other threads:[~2019-07-04 22:09 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-21 11:35 [RFC][PATCH] Extend DCE to remove unnecessary new/delete-pairs Dominik Inführ
2017-11-21 17:13 ` Jeff Law
2017-11-21 17:36   ` Dominik Inführ
2017-11-21 17:45     ` Jeff Law
2017-11-22 10:40   ` Martin Jambor
2017-11-22 18:03     ` Jeff Law
2017-11-22  9:33 ` Richard Biener
2017-11-22 10:41   ` Jakub Jelinek
2017-11-27  9:57     ` Dominik Inführ
2017-11-27 10:48       ` Jakub Jelinek
2017-11-27 17:04       ` Jeff Law
2017-11-28 11:55         ` Richard Biener
2017-11-28 14:48           ` Jakub Jelinek
2017-11-29  8:13       ` Martin Sebor
2017-11-29  9:33         ` Jakub Jelinek
2017-11-29 16:29           ` Martin Sebor
2017-11-29 16:53             ` David Malcolm
2017-11-29 17:01               ` Andrew Pinski
2018-05-13 17:19               ` Marc Glisse
2019-07-02 11:49                 ` [PATCH 1/2] Come up with function_decl_type and use it in tree_function_decl Martin Liška
2019-07-02 11:50                   ` [PATCH 2/2] Extend DCE to remove unnecessary new/delete-pairs (PR c++/23383) Martin Liška
2019-08-02 21:34                     ` H.J. Lu
2019-08-05  6:44                       ` [PATCH] Handle new operators with no arguments in DCE Martin Liška
2019-08-05  7:08                         ` Marc Glisse
2019-08-05  9:53                           ` Martin Liška
2019-08-05 11:57                             ` Marc Glisse
2019-08-05 12:52                               ` Martin Liška
2019-08-05 13:46                                 ` Marc Glisse
2019-08-06 14:07                                   ` Martin Liška
2019-08-06 15:35                                     ` [PATCH] Detect not-cloned new/delete operators " Martin Liška
2019-08-06 15:59                                       ` Marc Glisse
2019-08-07  9:31                                         ` Martin Liška
2019-08-07 10:15                                           ` Richard Biener
2019-08-06 17:30                                       ` Martin Jambor
2019-08-07  8:56                                         ` Martin Liška
2019-08-07  9:54                                     ` [PATCH] Handle new operators with no arguments " Richard Biener
2019-08-07 11:36                                       ` Martin Liška
2019-08-07 11:51                                         ` Jakub Jelinek
2019-08-07 12:06                                           ` Martin Liška
2019-08-07 14:35                                             ` Richard Biener
2019-08-08  9:01                                               ` Martin Liška
2019-08-15 11:06                                                 ` Martin Liška
2019-08-15 11:35                                                   ` Richard Biener
2019-08-05 12:13                         ` Richard Biener
2019-07-02 16:02                   ` [PATCH 1/2] Come up with function_decl_type and use it in tree_function_decl Martin Sebor
2019-07-02 17:15                   ` Marc Glisse
2019-07-03 15:03                     ` Martin Liška
2019-07-03 16:44                       ` Richard Biener
2019-07-04 22:21                         ` Marc Glisse [this message]
2019-07-08 13:02                           ` Martin Liška
2019-07-08 22:00                             ` Jason Merrill
2019-07-09  2:28                             ` Marc Glisse
2019-07-09  7:52                               ` Marc Glisse
2019-07-09  8:49                                 ` Martin Liška
2019-07-09 10:22                                   ` Marc Glisse
2019-07-09 21:02                                     ` Jason Merrill
2019-07-11  6:48                                       ` Martin Liška
2019-07-22 14:00                                         ` Martin Liška
2019-07-24 19:05                                         ` Jeff Law
2019-07-25 10:24                                           ` Richard Biener
2019-07-25  2:17                                         ` Marc Glisse
2019-07-25  8:34                                           ` Martin Liška
2019-07-25 12:21                                             ` Marc Glisse
2019-07-25 13:50                                               ` Martin Liška
2019-07-25 15:41                                                 ` Martin Liška
2019-07-28 21:50                                                   ` [PATCH] Remove also 2nd argument for unused delete operator (PR tree-optimization/91270) Martin Liška
2019-07-29 10:03                                                     ` Richard Biener
2019-07-29 10:54                                                       ` Martin Liška
2019-07-29 14:40                                                         ` Richard Biener
2019-07-30  7:48                                                           ` Martin Liška
2019-07-30  8:09                                                             ` Martin Liška
2019-07-30  8:42                                                               ` Richard Biener
2019-07-30 10:20                                                                 ` Martin Liška
2019-07-30 10:28                                                                   ` Richard Biener
2019-07-30 12:08                                                                   ` Marc Glisse
2019-07-30 12:12                                                                     ` Martin Liška
2019-07-30 13:14                                                                       ` Marc Glisse
2019-07-30 13:41                                                                         ` Martin Liška
2019-07-30 14:37                                                                           ` Marc Glisse
2019-07-31  8:42                                                                             ` [PATCH] Mark necessary 2nd and later args for delete op Martin Liška
2019-07-31 10:24                                                                               ` Richard Biener
2019-07-31 10:00                                                                           ` [PATCH] Remove also 2nd argument for unused delete operator (PR tree-optimization/91270) Richard Biener
2019-07-29  9:59                                                   ` [PATCH 1/2] Come up with function_decl_type and use it in tree_function_decl Richard Biener
2017-11-29 18:05             ` [RFC][PATCH] Extend DCE to remove unnecessary new/delete-pairs Richard Biener
2017-12-04 12:20             ` Trevor Saunders
2017-12-01  1:24           ` Jeff Law
2017-12-01  1:23         ` Jeff Law
2017-11-22 13:03 ` Nathan Sidwell
2017-11-22 14:18   ` Richard Biener
2017-11-22 14:45     ` Nathan Sidwell
2017-11-22 21:45 ` Marc Glisse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.21.1907042335100.15312@stedding.saclay.inria.fr \
    --to=marc.glisse@inria.fr \
    --cc=dmalcolm@redhat.com \
    --cc=dominik.infuehr@theobroma-systems.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=mliska@suse.cz \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).