Messages in this thread | | | From | "H. Peter Anvin" <> | Subject | Re: [patch 4/21] fix ARCH_HAS_PREFETCH | Date | 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/
| |