public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
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.


  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).