Re: [patch 4/21] fix ARCH_HAS_PREFETCH

H. Peter Anvin (hpa@zytor.com)
13 Aug 2002 15:12:53 -0700


Followup to: <Pine.NEB.4.44.0208132322340.1351-100000@mimas.fachschaften.tu-muenchen.de>
By author: Adrian Bunk <bunk@fs.tum.de>
In newsgroup: linux.dev.kernel
> >
> > Because the compiler sees:
> >
> > for (i = 0; i < N; i++)
> > ;
> >
> > and it says "ah ha. A busy wait delay loop" and leaves it alone.
> >
> > It's actually a special-case inside the compiler to not optimise
> > away such constructs.
>
> Why is this a special case? As long as a compiler can't prove that the
> computed value of i isn't used later it mustn't optimize it away.
>

Bullsh*t. It can legitimately transform it into:

i = N;

> Kernighan/Ritchie (German translation of the second edition) contains the
> following example program that shows why the compiler mustn't optimize it
> away:
>
> <-- snip -->
>
> #include <stdio.h>
>
> main()
> {
> double nc;
>
> for (nc = 0; getchar() != EOF; ++nc)
> ;
> printf("%.0f\n", nc);
>
> }
>

getchar() has side effects.

-hpa

-- 
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt	<amsp@zytor.com>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/