public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jeff Law <law@redhat.com>
To: Jan Hubicka <hubicka@ucw.cz>
Cc: mliska <mliska@suse.cz>, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH 3/5] IPA ICF pass
Date: Mon, 30 Jun 2014 19:06:00 -0000	[thread overview]
Message-ID: <53B1B51D.4080505@redhat.com> (raw)
In-Reply-To: <20140626184614.GB29056@kam.mff.cuni.cz>

On 06/26/14 12:46, Jan Hubicka wrote:
> So you've added this at -O2, what is the general compile-time
>> impact? Would it make more sense to instead have it be part of -O3,
>> particularly since ICF is rarely going to improve performance (sans
>> icache issues).
>
> I think code size optimization not sacrifying any (or too much of) performance are
> generally very welcome at -O2.  Compared to LLVM and Microsoft compilers we are
> on code bloat side at -O2.
I'm not so much worried about runtime performance here, but compile-time 
performance.  ICF would seem like a general win as we're likely going to 
be more icache efficient.

So, just to be clear, if the compile-time impact is minimal, then I'll 
fully support -O2, but my worry is that it won't be minimal :(


>> Is returning TRUE really the conservatively correct thing to do in
>> the absence of aliasing information?  Isn't that case really "I
>> don't know" in which case the proper return value is FALSE?
>
> I think with -fno-strict-aliasing the set should be 0 (Richi?) and thus we can
> compare for equality.  We probably can be on agressive side and let 0 alias
> set prevail the non-0.  But that can be done incrementally.
I'd think it should be zero in the -fno-strict-aliasing case.  My 
concern was that in the -fno-strict-aliasing case we seems to always 
assume the objects are the same.  Is that the safe thing to do?

That hints that the comment for the function needs tweaking.  It really 
doesn't say anything about what the return values really mean.


> There are few, like we can ignore "weak" or "visibility" attribute because we do
> produce alias with proper visibility anyway.  My plan is to start removing those
> attributes from declarations once they are turned into suitable representation
> in symbol table (or for attributes like const/noreturn/pure where we have explicit
> decl flags).  This will make our life bit easier later, too.
>
> We probably then can whitelist some attributes, but I would deal with this later.
Sure, I don't mind going with the conservative approach and iterating to 
remove some of the limitations.

>
> Yep, there are no resonable orders on it.  If function starts same in source code they ought
> to end up same here.  Plan was to first match for exact equality and then play with
> smarter tricks here.
Yea, that's fine too.  It's conservatively correct and we may find that 
there just isn't much to gain by doing hte dfs walk to build indices and 
such for the CFG.  I guess ultimately I just want someone to look at 
that issue and evaluate if what we're doing now is "good enough" or if 
we're missing most of the benefit because of something like bb index 
stability or something dumb like that.

>
> Yep, the pass has grown up to be rather long. The gimple equality testing is the
> main body of work, so perhaps doing this in separate file is good idea.
I'd certainly like to see that happen both because of its size and 
because I think those bits are useful in other contexts.

Overall, most of the stuff looks quite reasonable.

jeff

  parent reply	other threads:[~2014-06-30 19:06 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-16 10:07 [PATCH 1/5] New Identical Code Folding IPA pass mliska
2014-06-16 10:07 ` [PATCH 2/5] Existing call graph infrastructure enhancement mliska
2014-06-17 20:00   ` Jeff Law
2014-06-30 11:49     ` Martin Liška
2014-06-30 18:54       ` Jeff Law
2014-07-17 14:54         ` Martin Liška
2014-08-25  9:56           ` Martin Liška
2014-08-25 16:12             ` Jan Hubicka
2014-08-27 21:12             ` Jeff Law
2014-09-24 14:23   ` Martin Liška
2014-09-24 15:01     ` Jan Hubicka
2014-09-26 10:19       ` Martin Liška
2014-06-16 10:07 ` [PATCH 5/5] New tests introduction mliska
2014-06-17 19:53   ` Jeff Law
2014-06-30 12:14     ` Martin Liška
2014-10-19  8:19       ` Andreas Schwab
2014-10-23 12:34         ` Martin Liška
2014-06-16 10:07 ` [PATCH 3/5] IPA ICF pass mliska
2014-06-20  7:32   ` Trevor Saunders
2014-06-26 11:18     ` Martin Liška
2014-07-05 21:44     ` Gerald Pfeifer
2014-07-05 22:53       ` Jan Hubicka
2014-07-17 15:23         ` Martin Liška
2014-09-26 12:20           ` Martin Liška
2014-09-26 14:44             ` Markus Trippelsdorf
2014-09-26 23:27               ` Jan Hubicka
2014-09-27  5:59                 ` Markus Trippelsdorf
2014-09-27  7:47                   ` Markus Trippelsdorf
2014-09-27 10:46                     ` Martin Liška
2014-09-27 10:37                   ` Martin Liška
2014-09-28  2:21                     ` Jan Hubicka
2014-10-10 23:54                       ` Fakturace
2014-10-11  0:02                       ` Martin Liška
2014-10-11  8:23                         ` Jan Hubicka
2014-10-13 13:20                           ` Martin Liška
2014-10-13 13:29                             ` Jan Hubicka
2014-09-27 10:32                 ` Martin Liška
2014-09-26 20:47             ` Jan Hubicka
2014-10-11  0:08               ` Martin Liška
2014-10-11  8:26                 ` Jan Hubicka
2014-10-13 15:17                 ` Martin Liška
2014-10-14 16:12                   ` Jan Hubicka
2014-10-15 17:06                     ` Martin Liška
2014-10-22 21:20                       ` Jiong Wang
2014-11-06  3:01                         ` Joey Ye
2014-11-06  9:03                           ` Jan Hubicka
2014-11-13 22:26                       ` H.J. Lu
2015-01-20 21:29                         ` H.J. Lu
2014-09-26 22:27             ` Jan Hubicka
2014-10-11  0:23               ` Martin Liška
2014-10-11  9:05                 ` Jan Hubicka
2014-06-24 20:31   ` Jeff Law
2014-06-26 16:02     ` Martin Liška
2014-06-26 18:46     ` Jan Hubicka
2014-06-30 12:05       ` Martin Liška
2014-07-01 23:45         ` Trevor Saunders
2014-06-30 19:06       ` Jeff Law [this message]
2014-06-16 10:07 ` [PATCH 4/5] Existing tests fix mliska
2014-06-17 19:52   ` Jeff Law
2014-06-17 20:50     ` Rainer Orth
2014-06-18  9:02       ` Martin Liška
2014-06-30 12:12     ` Martin Liška
2014-09-26 12:21       ` Martin Liška
2014-06-17 19:49 ` [PATCH 1/5] New Identical Code Folding IPA pass Jeff Law
2014-06-18 19:05   ` Jan Hubicka
2014-06-17 20:09 ` Paolo Carlini
2014-06-18  8:46   ` Martin Liška
2014-06-18  8:49     ` Paolo Carlini
2014-06-17 20:17 ` David Malcolm
2014-06-18  8:10   ` Martin Liška

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=53B1B51D.4080505@redhat.com \
    --to=law@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hubicka@ucw.cz \
    --cc=mliska@suse.cz \
    /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).