All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Daniel Santos <daniel.santos@pobox.com>
Cc: Daniel Santos <danielfsantos@att.net>,
	Michel Lespinasse <walken@google.com>,
	riel@redhat.com, peterz@infradead.org, aarcange@redhat.com,
	dwmw2@infradead.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, torvalds@linux-foundation.org
Subject: Re: [PATCH v3 2/9] rbtree: add __rb_change_child() helper function
Date: Wed, 26 Sep 2012 15:43:45 -0700	[thread overview]
Message-ID: <20120926154345.52cb9f33.akpm@linux-foundation.org> (raw)
In-Reply-To: <506382E3.3020102@att.net>

On Wed, 26 Sep 2012 17:34:11 -0500
Daniel Santos <danielfsantos@att.net> wrote:

> Sorry to resurrect the dead here, but I'm playing catch-up and this
> looks important.
> 
> On 08/20/2012 05:17 PM, Andrew Morton wrote:
> > I'm inclined to agree with Peter here - "inline" is now a vague,
> > pathetic and useless thing.  The problem is that the reader just
> > doesn't *know* whether or not the writer really wanted it to be
> > inlined.
> >
> > If we have carefully made a decision to inline a function, we should
> > (now) use __always_inline.
> Are we all aware here that __always_inline (a.k.a.
> "__attribute__((always_inline))") just means "inline even when not
> optimizing"?  This appears to be a very common misunderstanding (unless
> the gcc docs are wrong, see
> http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#index-g_t_0040code_007bflatten_007d-function-attribute-2512).
> 
> If you want to *force* gcc to inline a function (when inlining is
> enabled), you can currently only do it from the calling function by
> adding the |flatten attribute to it, which I have proposed adding here:
> https://lkml.org/lkml/2012/9/25/643.
> 
> Thus, all of the __always_inline markings we have in the kernel only
> affect unoptimized builds (and maybe -O1?).  If we need this feature
> (and I think it would be darned handy!) we'll have to work on gcc to get it.

When I replace the four __always_inline's in fs/namei.c with "inline",
namei.o's .text shrinks 2kbytes (gcc-4.4.4), so __always_inline does
allear to be doing what we think it does?



WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Daniel Santos <daniel.santos@pobox.com>
Cc: Daniel Santos <danielfsantos@att.net>,
	Michel Lespinasse <walken@google.com>,
	riel@redhat.com, peterz@infradead.org, aarcange@redhat.com,
	dwmw2@infradead.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, torvalds@linux-foundation.org
Subject: Re: [PATCH v3 2/9] rbtree: add __rb_change_child() helper function
Date: Wed, 26 Sep 2012 15:43:45 -0700	[thread overview]
Message-ID: <20120926154345.52cb9f33.akpm@linux-foundation.org> (raw)
In-Reply-To: <506382E3.3020102@att.net>

On Wed, 26 Sep 2012 17:34:11 -0500
Daniel Santos <danielfsantos@att.net> wrote:

> Sorry to resurrect the dead here, but I'm playing catch-up and this
> looks important.
> 
> On 08/20/2012 05:17 PM, Andrew Morton wrote:
> > I'm inclined to agree with Peter here - "inline" is now a vague,
> > pathetic and useless thing.  The problem is that the reader just
> > doesn't *know* whether or not the writer really wanted it to be
> > inlined.
> >
> > If we have carefully made a decision to inline a function, we should
> > (now) use __always_inline.
> Are we all aware here that __always_inline (a.k.a.
> "__attribute__((always_inline))") just means "inline even when not
> optimizing"?  This appears to be a very common misunderstanding (unless
> the gcc docs are wrong, see
> http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#index-g_t_0040code_007bflatten_007d-function-attribute-2512).
> 
> If you want to *force* gcc to inline a function (when inlining is
> enabled), you can currently only do it from the calling function by
> adding the |flatten attribute to it, which I have proposed adding here:
> https://lkml.org/lkml/2012/9/25/643.
> 
> Thus, all of the __always_inline markings we have in the kernel only
> affect unoptimized builds (and maybe -O1?).  If we need this feature
> (and I think it would be darned handy!) we'll have to work on gcc to get it.

When I replace the four __always_inline's in fs/namei.c with "inline",
namei.o's .text shrinks 2kbytes (gcc-4.4.4), so __always_inline does
allear to be doing what we think it does?


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2012-09-26 22:43 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-20 22:05 [PATCH v3 0/9] faster augmented rbtree interface Michel Lespinasse
2012-08-20 22:05 ` Michel Lespinasse
2012-08-20 22:05 ` [PATCH v3 1/9] rbtree test: fix sparse warning about 64-bit constant Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:05 ` [PATCH v3 2/9] rbtree: add __rb_change_child() helper function Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:17   ` Andrew Morton
2012-08-20 22:17     ` Andrew Morton
2012-08-23 12:05     ` Jan Engelhardt
2012-08-23 12:05       ` Jan Engelhardt
2012-08-23 13:08       ` David Woodhouse
2012-09-26 22:34     ` Daniel Santos
2012-09-26 22:34       ` Daniel Santos
2012-09-26 22:43       ` Andrew Morton [this message]
2012-09-26 22:43         ` Andrew Morton
2012-08-20 22:05 ` [PATCH v3 3/9] rbtree: place easiest case first in rb_erase() Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:28   ` Andrew Morton
2012-08-20 22:28     ` Andrew Morton
2012-08-20 22:05 ` [PATCH v3 4/9] rbtree: handle 1-child recoloring in rb_erase() instead of rb_erase_color() Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:05 ` [PATCH v3 5/9] rbtree: low level optimizations in rb_erase() Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:05 ` [PATCH v3 6/9] rbtree: augmented rbtree test Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:05 ` [PATCH v3 7/9] rbtree: faster augmented rbtree manipulation Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:05 ` [PATCH v3 8/9] rbtree: remove prior augmented rbtree implementation Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse
2012-08-20 22:05 ` [PATCH v3 9/9] rbtree: add RB_DECLARE_CALLBACKS() macro Michel Lespinasse
2012-08-20 22:05   ` Michel Lespinasse

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=20120926154345.52cb9f33.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=aarcange@redhat.com \
    --cc=daniel.santos@pobox.com \
    --cc=danielfsantos@att.net \
    --cc=dwmw2@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=torvalds@linux-foundation.org \
    --cc=walken@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.