From: Richard Earnshaw <rearnsha@arm.com>
To: Joe Buck <jbuck@synopsys.com>
Cc: Paolo Carlini <pcarlini@unitus.it>,
Gabriel Dos Reis <gdr@integrable-solutions.net>,
Robert Dewar <dewar@gnat.com>,
Richard.Earnshaw@arm.com, aoliva@redhat.com, gcc@gcc.gnu.org,
kgardas@objectsecurity.com, rguenth@tat.physik.uni-tuebingen.de
Subject: Re: std::pow implementation
Date: Wed, 30 Jul 2003 17:35:00 -0000 [thread overview]
Message-ID: <200307301709.h6UH9uh21275@pc960.cambridge.arm.com> (raw)
In-Reply-To: Your message of "Wed, 30 Jul 2003 09:39:04 PDT." <20030730093904.A16467@synopsys.com>
> The analogy between the keywords "inline" and "register" is often made,
> but I think that it is inappropriate. The reason is that we can do very
> good register allocation based only on local information, where the same
> is not true of many inlining decisions, which involve a more complicated
> set of tradeoffs (other than for very small functions; for such cases the
> compiler can reliably determine that an inlined call will be better by
> every measure than a non-inlined call). When the goal is optimization
> for speed, detailed information about the cache and the execution profile
> will be needed in many cases for an accurate decision.
It's true that the similarities are weak, but there are similarites. The
most significant difference, as I see it, is that "inline" does introduce
more information for the compiler to make use of (it provides the
definition as well as the interface).
> In any case, at this stage in the state of the art of compiler
> development, we are not even close to the day where it's a good idea
> to just ignore the inline keyword.
I don't believe that we can ever entirely ignore "inline" in the way we
ignore "register" because it does introduce (especially in C90) subtle
changes of meaning for the code. So the issue isn't really a matter of
ignoring as much as "deciding" that in the current context calling an
out-of-line copy is the more optimal solution.
This entire debate is really about how, and when, that decision gets made
and what the heuristics for deciding it need to be. The argument is so
hot because there are occasions when trivial inline functions are not
being inlined, but cranking up the metrics is leading to pathological
behaviour. Currently, GCC's heuristics are fairly dumb (a static count of
the number of un-optimized tree nodes that are introduced). A much better
choice could probably be achieved if we did some optimization on the
inline candidate before we made a decision the more optimizations the more
likely we are to get a good choice (for example -- duplicate the tree,
feed in the arguments from the current call site, run the tree-level
optimizations and look at the size of the result. If we've fed in
constant arguments then the size of the result may be a tiny fraction of
the original tree).
Maybe we should just have an option "-fdumb-inlining" and give the user
the final choice (to quote an advert here in the UK "it does exactly what
it says on the tin"). Eventually, we could probably make smart inlining
so much better that nobody would need the "dumb" option.
R.
next prev parent reply other threads:[~2003-07-30 17:10 UTC|newest]
Thread overview: 211+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-30 14:21 Robert Dewar
2003-07-30 14:44 ` Gabriel Dos Reis
2003-07-30 14:51 ` Paolo Carlini
2003-07-30 16:59 ` Joe Buck
2003-07-30 17:35 ` Richard Earnshaw [this message]
-- strict thread matches above, loose matches on Subject: below --
2003-08-04 22:57 Robert Dewar
2003-08-04 18:42 Robert Dewar
2003-08-04 18:46 ` Gabriel Dos Reis
2003-08-04 18:22 Robert Dewar
2003-08-04 18:29 ` Gabriel Dos Reis
2003-08-04 18:21 Robert Dewar
2003-08-04 18:08 Robert Dewar
2003-08-04 18:17 ` Gabriel Dos Reis
2003-08-04 17:48 Robert Dewar
2003-08-04 17:57 ` Gabriel Dos Reis
2003-08-04 18:14 ` Joe Buck
2003-08-04 17:43 Robert Dewar
2003-08-04 17:53 ` Gabriel Dos Reis
2003-08-04 17:33 Robert Dewar
2003-08-04 17:36 ` Joe Buck
2003-08-04 17:38 ` Gabriel Dos Reis
2003-08-04 22:28 ` Mark Hahn
2003-08-04 22:49 ` tm_gccmail
2003-08-04 17:03 Robert Dewar
2003-08-04 17:23 ` Joe Buck
2003-08-04 18:05 ` Richard Earnshaw
2003-08-04 18:15 ` Gabriel Dos Reis
2003-08-04 19:00 ` Bernd Schmidt
2003-08-04 19:12 ` Richard Guenther
2003-07-31 12:05 Robert Dewar
2003-07-31 13:00 ` Gabriel Dos Reis
2003-07-31 11:50 Robert Dewar
2003-07-31 10:54 Richard Guenther
2003-07-31 11:08 ` Gabriel Dos Reis
2003-07-31 11:31 ` Rob Taylor
2003-07-31 14:13 ` Scott Robert Ladd
2003-07-31 14:44 ` Gabriel Dos Reis
2003-07-31 17:24 ` Steven Bosscher
2003-07-31 18:45 ` Scott Robert Ladd
2003-07-31 10:19 Martin Reinecke
2003-07-31 10:38 ` Gabriel Dos Reis
2003-07-30 22:49 Robert Dewar
2003-07-30 22:28 Robert Dewar
2003-07-30 21:49 Robert Dewar
2003-07-30 16:36 Robert Dewar
2003-07-30 16:49 ` Gabriel Dos Reis
2003-07-30 16:55 ` Scott Robert Ladd
2003-07-30 19:21 ` Felix Lee
2003-07-30 16:08 Robert Dewar
2003-07-30 16:06 Richard Guenther
2003-07-30 16:37 ` Martin Reinecke
2003-07-30 14:25 Robert Dewar
2003-07-30 14:49 ` Gabriel Dos Reis
2003-07-30 14:18 Robert Dewar
2003-07-30 14:31 ` Richard Earnshaw
2003-07-30 14:36 ` Richard Guenther
2003-07-30 14:11 Robert Dewar
2003-07-30 14:29 ` Richard Guenther
2003-07-30 14:05 Robert Dewar
2003-07-30 14:14 ` Gabriel Dos Reis
2003-07-30 14:04 Robert Dewar
2003-07-30 14:10 ` Gabriel Dos Reis
2003-07-30 13:56 Robert Dewar
2003-07-30 14:04 ` Richard Guenther
2003-07-30 14:08 ` Gabriel Dos Reis
2003-07-31 2:10 ` Alexandre Oliva
2003-07-31 2:46 ` Gabriel Dos Reis
2003-07-31 6:49 ` Alexandre Oliva
2003-07-31 7:58 ` Gabriel Dos Reis
2003-07-31 8:14 ` Gabriel Dos Reis
2003-07-30 13:52 Robert Dewar
2003-07-30 14:02 ` Richard Guenther
2003-07-30 13:25 Robert Dewar
2003-07-30 13:13 Martin Reinecke
2003-07-30 13:30 ` Gabriel Dos Reis
2003-07-30 13:40 ` Martin Reinecke
2003-07-30 13:46 ` Andrew Pinski
2003-07-30 13:47 ` Steven Bosscher
2003-07-30 14:32 ` Martin Reinecke
2003-07-30 13:53 ` Gabriel Dos Reis
2003-07-30 14:14 ` Martin Reinecke
2003-07-30 14:33 ` Gabriel Dos Reis
2003-07-30 15:27 ` Martin Reinecke
2003-07-30 15:42 ` Gabriel Dos Reis
2003-07-30 17:38 ` Martin Reinecke
2003-08-04 12:55 ` Theodore Papadopoulo
2003-08-04 13:11 ` Gabriel Dos Reis
2003-08-04 14:32 ` Theodore Papadopoulo
2003-08-04 14:50 ` Gabriel Dos Reis
2003-08-04 14:58 ` Daniel Berlin
2003-07-30 15:56 ` Scott Robert Ladd
2003-07-30 16:16 ` Steven Bosscher
2003-07-30 16:47 ` Scott Robert Ladd
2003-07-30 12:55 Stephan T. Lavavej
2003-07-30 12:59 ` Gabriel Dos Reis
2003-07-29 11:57 Richard Guenther
2003-07-29 12:10 ` Gabriel Dos Reis
2003-07-29 12:10 ` Richard Guenther
2003-07-29 12:14 ` Gabriel Dos Reis
2003-07-29 12:25 ` Richard Guenther
2003-07-29 12:38 ` Gabriel Dos Reis
2003-07-29 12:44 ` Richard Guenther
2003-07-29 12:49 ` Gabriel Dos Reis
2003-07-30 5:18 ` Alexandre Oliva
2003-07-30 5:26 ` Gabriel Dos Reis
2003-07-30 6:57 ` Alexandre Oliva
2003-07-30 10:11 ` Gabriel Dos Reis
2003-07-30 11:58 ` Richard Earnshaw
2003-07-30 12:11 ` Gabriel Dos Reis
2003-07-30 12:13 ` Steven Bosscher
2003-07-30 12:23 ` Gabriel Dos Reis
2003-07-30 12:31 ` Steven Bosscher
2003-07-30 12:47 ` Gabriel Dos Reis
2003-07-30 13:06 ` Steven Bosscher
2003-07-30 13:22 ` Gabriel Dos Reis
2003-07-30 12:42 ` Richard Guenther
2003-07-30 12:46 ` Gabriel Dos Reis
2003-07-30 13:01 ` Richard Guenther
2003-07-30 13:26 ` Steven Bosscher
2003-07-30 13:38 ` Richard Guenther
2003-07-30 13:49 ` Gabriel Dos Reis
2003-07-30 13:19 ` Karel Gardas
2003-07-30 13:24 ` Gabriel Dos Reis
2003-07-30 13:41 ` Richard Earnshaw
2003-07-30 13:51 ` Gabriel Dos Reis
2003-07-30 13:51 ` Richard Earnshaw
2003-07-30 13:59 ` Gabriel Dos Reis
2003-07-30 14:08 ` Richard Guenther
2003-07-30 14:19 ` Richard Guenther
2003-07-30 14:24 ` Gabriel Dos Reis
2003-07-30 14:48 ` Richard Guenther
2003-07-30 14:55 ` Gabriel Dos Reis
2003-07-30 15:29 ` Richard Guenther
2003-07-31 0:30 ` Richard B. Kreckel
2003-07-30 14:11 ` Richard Earnshaw
2003-07-30 14:26 ` Gabriel Dos Reis
2003-07-30 16:25 ` Scott Robert Ladd
2003-07-30 13:59 ` Richard Guenther
2003-07-30 14:01 ` Gabriel Dos Reis
2003-07-30 15:45 ` Scott Robert Ladd
2003-07-30 16:50 ` Richard Earnshaw
2003-07-30 16:57 ` Gabriel Dos Reis
2003-07-30 17:42 ` Richard Earnshaw
2003-07-30 18:06 ` Gabriel Dos Reis
2003-07-30 17:02 ` Scott Robert Ladd
2003-07-30 19:31 ` tm_gccmail
2003-07-30 17:32 ` Joe Buck
2003-07-29 12:53 ` Steven Bosscher
2003-07-29 12:53 ` Gabriel Dos Reis
2003-07-29 12:58 ` Richard Guenther
2003-07-29 12:59 ` Steven Bosscher
2003-07-29 13:05 ` Paolo Carlini
2003-07-29 13:22 ` Richard Guenther
2003-07-29 13:36 ` Steven Bosscher
2003-07-29 14:14 ` Richard Guenther
2003-07-29 14:22 ` Richard Guenther
2003-07-29 13:00 ` Andrew Pinski
2003-07-29 13:28 ` Richard Guenther
2003-07-29 13:59 ` Andrew Pinski
2003-07-29 14:17 ` Gabriel Dos Reis
2003-07-29 13:14 ` Gabriel Dos Reis
2003-07-29 13:14 ` Steven Bosscher
2003-07-29 14:08 ` Gabriel Dos Reis
2003-07-29 14:24 ` Steven Bosscher
2003-07-29 14:24 ` Gabriel Dos Reis
2003-07-29 14:31 ` Gabriel Dos Reis
2003-07-29 14:40 ` Steven Bosscher
2003-07-29 15:11 ` Gabriel Dos Reis
2003-07-29 15:37 ` Michael Matz
2003-07-29 15:59 ` Gabriel Dos Reis
2003-07-29 15:59 ` Michael Matz
2003-07-29 16:05 ` Gabriel Dos Reis
2003-07-29 16:20 ` Rob Taylor
2003-07-29 14:36 ` Gabriel Dos Reis
2003-07-29 15:24 ` Richard Guenther
2003-07-29 16:30 ` Gabriel Dos Reis
2003-07-29 18:35 ` Richard Guenther
2003-07-29 14:51 ` Gabriel Dos Reis
2003-07-29 15:33 ` Steven Bosscher
2003-07-30 5:24 ` Alexandre Oliva
2003-07-30 5:33 ` Gabriel Dos Reis
2003-07-30 6:38 ` Alexandre Oliva
2003-07-30 10:32 ` Gabriel Dos Reis
2003-07-30 10:33 ` Alexandre Oliva
2003-07-30 10:46 ` Gabriel Dos Reis
2003-07-30 11:57 ` Alexandre Oliva
2003-07-30 12:20 ` Gabriel Dos Reis
2003-07-30 15:50 ` Scott Robert Ladd
2003-07-30 15:53 ` Steven Bosscher
2003-07-30 15:53 ` Richard Guenther
2003-07-30 16:01 ` Gabriel Dos Reis
2003-07-30 16:09 ` Steven Bosscher
2003-07-30 16:39 ` Gabriel Dos Reis
2003-07-30 16:17 ` Richard Guenther
2003-07-30 16:24 ` Steven Bosscher
2003-08-04 16:55 ` Bernd Schmidt
2003-08-04 17:08 ` Alexandre Oliva
2003-07-30 10:37 ` Steven Bosscher
2003-07-30 11:31 ` Gabriel Dos Reis
2003-07-30 15:44 ` Scott Robert Ladd
2003-07-30 17:10 ` Joe Buck
2003-07-30 17:32 ` Richard Guenther
2003-07-30 18:22 ` Daniel Berlin
2003-07-30 19:08 ` Richard Guenther
2003-07-30 19:12 ` Daniel Berlin
2003-07-30 17:06 ` Joe Buck
2003-07-30 17:26 ` Gabriel Dos Reis
2003-07-29 19:58 ` Neil Booth
2003-07-29 20:14 ` Gabriel Dos Reis
2003-07-29 20:33 ` Richard Guenther
2003-07-29 20:49 ` Gabriel Dos Reis
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=200307301709.h6UH9uh21275@pc960.cambridge.arm.com \
--to=rearnsha@arm.com \
--cc=Richard.Earnshaw@arm.com \
--cc=aoliva@redhat.com \
--cc=dewar@gnat.com \
--cc=gcc@gcc.gnu.org \
--cc=gdr@integrable-solutions.net \
--cc=jbuck@synopsys.com \
--cc=kgardas@objectsecurity.com \
--cc=pcarlini@unitus.it \
--cc=rguenth@tat.physik.uni-tuebingen.de \
/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).