public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@redhat.com>
To: Jeff Law <law@redhat.com>
Cc: "David Edelsohn" <dje.gcc@gmail.com>,
	"Steve Ellcey" <sellcey@imgtec.com>,
	"Martin Liška" <mliska@suse.cz>, "Jan Hubicka" <hubicka@ucw.cz>,
	"GCC Patches" <gcc-patches@gcc.gnu.org>,
	"Ramana Radhakrishnan" <ramana.radhakrishnan@arm.com>,
	"Richard Earnshaw" <Richard.Earnshaw@arm.com>
Subject: Re: Question about patch for PR bootstrap/65150 (identical functions)
Date: Fri, 08 May 2015 19:35:00 -0000	[thread overview]
Message-ID: <20150508193447.GR1751@tucnak.redhat.com> (raw)
In-Reply-To: <554D0A00.4000002@redhat.com>

On Fri, May 08, 2015 at 01:09:52PM -0600, Jeff Law wrote:
> On 05/08/2015 01:07 PM, David Edelsohn wrote:
> >>>>Steve Ellcey wrote:
> >>
> >>After your change GCC sees that the code for f1 and f2 are identical
> >>so it replaced the body of f2 with a call to f1.  This optimization will
> >>save space but it is not going to be faster because any call to f2 will
> >>now include an extra call/return.  Do other platforms have this same issue
> >>or is there a way to make f2 an alias for f1 on other targets so no extra
> >>call is needed?  I looked around to see if there was a target function or
> >>macro that is used to make one function an alias of another but I didn't
> >>see anything.
> >
> >This probably is not good for POWER, and probably not for ARM, in fact
> >probably not good for most RISC architectures.
> But isn't this code going to be creating aliases when the output format
> supports them -- which avoids the call/return overheads?
> 
> Which might argue that if we don't have aliases, then ICF might need to be a
> -Os thing.

ICF uses aliases only when possible (when it can prove that the callers
don't care about function address equality/non-equality.  In other cases
ICF uses caller redirection (if it is possible to redirect all callers and
remove unused other call), or thunks (otherwise).

Thunks indeed can slow things down somewhat, especially if they can't tail
call the function.

	Jakub

  reply	other threads:[~2015-05-08 19:35 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-08 19:07 David Edelsohn
2015-05-08 19:10 ` Jeff Law
2015-05-08 19:35   ` Jakub Jelinek [this message]
2015-05-08 21:58     ` Jan Hubicka
2015-05-08 22:56       ` Bernhard Reutner-Fischer
  -- strict thread matches above, loose matches on Subject: below --
2015-05-08 17:50 Steve Ellcey 

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=20150508193447.GR1751@tucnak.redhat.com \
    --to=jakub@redhat.com \
    --cc=Richard.Earnshaw@arm.com \
    --cc=dje.gcc@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hubicka@ucw.cz \
    --cc=law@redhat.com \
    --cc=mliska@suse.cz \
    --cc=ramana.radhakrishnan@arm.com \
    --cc=sellcey@imgtec.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).