Re: MSEC_TO_JIFFIES is messed up...

From: J. Bruce Fields
Date: Wed May 12 2004 - 16:47:08 EST


On Wed, May 12, 2004 at 02:01:58PM -0700, Davide Libenzi wrote:
> On Wed, 12 May 2004, Ingo Molnar wrote:
> > the compiler cannot discard the multiplication and the division from the
> > following:
> >
> > x * 1000 / 1000
> >
> > due to overflows.
>
> $ cat foo.c
>
> int foo(int i) {
>
>
> return i * 1000 / 1000;
> }

If gcc really optimizes that to just the identity function, then surely
that's a gcc bug? Multiplication is left-associative, so i * 1000 /
1000 = (i * 1000) / 1000, but (i * 1000) should be zero for any i
divisible by i^(sizeof(int) - 12).

It shouldn't be able to optimize out the 1000 here for exactly the same
reason it shouldn't be able to optimize out the shifts in, e.g.,

i << 12 >> 12

--Bruce Fields
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/