Re: [RFC: 2.6 patch] add -fno-tree-scev-cprop to KBUILD_CFLAGS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux