From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] clocksource: Fix build in non-OF case
Date: Thu, 28 Mar 2013 14:47:51 +0000 [thread overview]
Message-ID: <201303281447.51532.arnd@arndb.de> (raw)
In-Reply-To: <20130328131044.GA18316@opensource.wolfsonmicro.com>
On Thursday 28 March 2013, Mark Brown wrote:
> On Thu, Mar 28, 2013 at 01:08:22PM +0000, Arnd Bergmann wrote:
> > On Thursday 28 March 2013, Mark Brown wrote:
>
> > > That still looks like it'll reference the function?
>
> > Yes, that is intentional. The idea is to create a reference to the
> > function so gcc doesn't complain about unused symbols if the function
> > gets marked static, but at the same time mark the data structure we
> > define as unused so gcc can drop the structure as well as the function
> > if they are not referenced from anywhere else. This should let us
> > get away with fewer #ifdef hacks in the code, better build-time coverage
> > but without producing larger object code.
>
> So GCC is supposed to be smart enough to figure this out and users need
> to not do the ifdefs? I have to say this does seem a bit surprising
> from a user point of view but it does make sense from a general niceness
> point of view.
Yes, I'm pretty sure that all gcc-4.x versions can do this right at -Os
and -O2 levels. The new gcc-4.8 -Og level may get it wrong but is also
broken for many other things we do in the kernel, just like building with
gcc -O0.
Since we recently introduced the IS_ENABLED() macro to test for preprocessor
symbols, I think there is a general trend away from any #ifdefs in driver
code.
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Rob Herring <robherring2@gmail.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Tomasz Figa <tomasz.figa@gmail.com>,
Axel Lin <axel.lin@ingics.com>
Subject: Re: [PATCH] clocksource: Fix build in non-OF case
Date: Thu, 28 Mar 2013 14:47:51 +0000 [thread overview]
Message-ID: <201303281447.51532.arnd@arndb.de> (raw)
In-Reply-To: <20130328131044.GA18316@opensource.wolfsonmicro.com>
On Thursday 28 March 2013, Mark Brown wrote:
> On Thu, Mar 28, 2013 at 01:08:22PM +0000, Arnd Bergmann wrote:
> > On Thursday 28 March 2013, Mark Brown wrote:
>
> > > That still looks like it'll reference the function?
>
> > Yes, that is intentional. The idea is to create a reference to the
> > function so gcc doesn't complain about unused symbols if the function
> > gets marked static, but at the same time mark the data structure we
> > define as unused so gcc can drop the structure as well as the function
> > if they are not referenced from anywhere else. This should let us
> > get away with fewer #ifdef hacks in the code, better build-time coverage
> > but without producing larger object code.
>
> So GCC is supposed to be smart enough to figure this out and users need
> to not do the ifdefs? I have to say this does seem a bit surprising
> from a user point of view but it does make sense from a general niceness
> point of view.
Yes, I'm pretty sure that all gcc-4.x versions can do this right at -Os
and -O2 levels. The new gcc-4.8 -Og level may get it wrong but is also
broken for many other things we do in the kernel, just like building with
gcc -O0.
Since we recently introduced the IS_ENABLED() macro to test for preprocessor
symbols, I think there is a general trend away from any #ifdefs in driver
code.
Arnd
next prev parent reply other threads:[~2013-03-28 14:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-28 12:30 [PATCH] clocksource: Fix build in non-OF case Mark Brown
2013-03-28 12:30 ` Mark Brown
2013-03-28 12:39 ` Arnd Bergmann
2013-03-28 12:39 ` Arnd Bergmann
2013-03-28 12:55 ` Mark Brown
2013-03-28 12:55 ` Mark Brown
2013-03-28 13:08 ` Arnd Bergmann
2013-03-28 13:08 ` Arnd Bergmann
2013-03-28 13:10 ` Mark Brown
2013-03-28 13:10 ` Mark Brown
2013-03-28 14:47 ` Arnd Bergmann [this message]
2013-03-28 14:47 ` Arnd Bergmann
2013-03-29 18:30 ` Mark Brown
2013-03-29 18:30 ` Mark Brown
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=201303281447.51532.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.org \
/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.