[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20071112164023.GL9771@stusta.de>
Date: Mon, 12 Nov 2007 17:40:23 +0100
From: Adrian Bunk <bunk@...nel.org>
To: Bernd Schmidt <bernds_cb1@...nline.de>
Cc: Sam Ravnborg <sam@...nborg.org>, linux-kernel@...r.kernel.org
Subject: Re: [RFC: 2.6 patch] add -fno-tree-scev-cprop to KBUILD_CFLAGS
On Mon, Nov 12, 2007 at 05:24:18PM +0100, Bernd Schmidt wrote:
> Adrian Bunk wrote:
> > The gcc from svn that will become gcc 4.3 generates libgcc calls in
> > cases like the following (on 32bit architectures):
> >
> > <-- snip -->
> >
> > static inline void timespec_add_ns(struct timespec *a, u64 ns)
> > {
> > ...
> > while(ns >= NSEC_PER_SEC) {
> > ns -= NSEC_PER_SEC;
> > a->tv_sec++;
> > }
> > ...
> >
> > <-- snip -->
> >
> > It can make sense to emit assembler code doing division for such C code -
> > that doesn't seem to be something that would generally be wrong.
>
> It can be a pretty huge performance regression, so gcc ought to be fixed.
What is better depends on the values of ns and NSEC_PER_SEC.
It can be a performance regression, but there are also cases where it
can improve performance. If gcc produces lower performance code that
would be a bug in gcc that should be reported, but using a division is
not generally wrong.
A more clearer example might be:
<-- snip -->
void foo(u64 ns)
{
if (ns < 10000)
return;
while(ns >= 3) {
ns -= 3;
#ifdef DEBUG
bar(ns);
#endif
}
}
<-- snip -->
With DEBUG not defined you can hardly argue gcc should be fixed to not
use a division for performance reasons.
> Bernd
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists