delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/10/08/13:06:09

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Authentication-Warning: slinky.cs.nyu.edu: pechtcha owned process doing -bs
Date: Wed, 8 Oct 2003 13:05:13 -0400 (EDT)
From: Igor Pechtchanski <pechtcha AT cs DOT nyu DOT edu>
Reply-To: cygwin AT cygwin DOT com
To: Alex Vinokur <alexvn AT connect DOT to>
cc: cygwin AT cygwin DOT com
Subject: Re: Is a function actually inlined?
In-Reply-To: <bm1f2v$glo$1@sea.gmane.org>
Message-ID: <Pine.GSO.4.56.0310081259380.15176@slinky.cs.nyu.edu>
References: <bm0ks2$j8i$2 AT sea DOT gmane DOT org> <Pine DOT GSO DOT 4 DOT 56 DOT 0310081236250 DOT 15176 AT slinky DOT cs DOT nyu DOT edu>
<bm1f2v$glo$1 AT sea DOT gmane DOT org>
Importance: Normal
MIME-Version: 1.0

On Wed, 8 Oct 2003, Alex Vinokur wrote:

> "Igor Pechtchanski" <pechtcha AT cs DOT nyu DOT edu> wrote in message news:Pine DOT GSO DOT 4 DOT 56 DOT 0310081236250 DOT 15176 AT slinky DOT cs DOT nyu DOT edu...
> > On Wed, 8 Oct 2003, Alex Vinokur wrote:
> >
> > > "Corinna Vinschen" wrote in message news:20031008100004 DOT GC2070 AT cygbert DOT vinschen DOT de...
> > > > On Wed, Oct 08, 2003 at 11:19:27AM +0200, Alex Vinokur wrote:
> > > > > How can one know if a function requested to be inlined is actually
> > > > > inlined?
> > > >
> > > > A look into the assembler output generated by gcc/g++ will show you.
> > >
> > > How can one conclude if a function is actually inlined on the basis
> > > working with the nm and objdump utilities? For instance, are 'the foo2()
> > > and foo3() function from my original posting' actually inlined?
> >
> > The general rule of thumb is: if there's a call to a function, it's not
> > inlined.
> >
> > > $ grep foo t.s
> > >
> > > .globl __ZN3Foo4foo1Ev
> > >  .def __ZN3Foo4foo1Ev; .scl 2; .type 32; .endef
> > > __ZN3Foo4foo1Ev:
> > >  call __ZN3Foo4foo1Ev
> > >  call __ZN3Foo4foo2Ev
> > >  call __ZN3Foo4foo3Ev
> >    ^^^^^^^^^^^^^^^^^^^^
> > FWIW, it doesn't look like they are inlined.
>
> On the other hand we don't see
> * call foo2()
>   and
> * call foo3()
> here :
>
> $ objdump -CS t.o | grep foo
                           ^^^
s/foo/call/?

>   1a: e8 00 00 00 00        call   1f <main+0x19>
>   1f: e8 00 00 00 00        call   24 <main+0x1e>
>   2a: e8 d1 ff ff ff        call   0 <Foo::foo1()>
>   35: e8 00 00 00 00        call   3a <main+0x34>
>   40: e8 00 00 00 00        call   45 <main+0x3f>

Yes, apparently the .s file is not the final assembly output -- some
transformations do happen between that and the object file.  So, look at
the output of objdump and see if there are calls to those functions.

One thing to note is that in gcc (as in many other compilers) inlining can
happen at different levels.  What you're probably seeing here, IMO, is a
peephole optimization that inlines any empty functions, rather than gcc
considering the 'inline' keyword.

So, to answer your original question, I don't think the 'inline' keyword
influenced the final binary, but the functions did get inlined by some
other mechanism.
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha AT cs DOT nyu DOT edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor AT watson DOT ibm DOT com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"I have since come to realize that being between your mentor and his route
to the bathroom is a major career booster."  -- Patrick Naughton

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019