Thu, 9 Jan 1997 12:05:00 +0000
W. Wesley Groleau wrote:
> What irritated me even more than compiler bugs was
> that people would refuse to use the optimizer on any file.
> I always figured it to turn off the optimizer for one out of a hundred
> files was a lot easier than some of the code contortions people would
> write for the sake of "hand-optimizing".
I find this difficult to understand. If you understand in detail all the bugs
in your compilation system and you have tools to inspect your source code so
that you can identify any files that might suffer from the bugs, then perhaps
I /would/ agree. My experience is different. Compiler bugs tend to be
pathelogical, otherwise they would have been found before and fixed (I'm an
optimist). Often they cause the code to behave oddly under obscure situations
which, sadly, don't always get tested. If an optimiser significantly
increases the incidence of latent bugs, that is bad news.
Our systems here are built from many hundreds of files. Productivity
requirements lead us to adopt an approach to the building of these systems
which is sytematic and largely mechanised. Special cases, such as supressing
the optimiser, are not welcome, and hence my comment earlier about the need
for tool support.
We don't use the optimiser. Personally, I would like it to be used so that we
had a reasonable chance of hammering out the bugs in it, but we don't have
the resources. Performance /is/ a worry. Fortunately, hardware continues to
improve fast enough for us to be able to deliver the performance improvements
we need. Additionally, our understanding of the right way to do things
continues to improve, and so we sometimes find that a revision to add
functionality also increases performance.
There may well come a time when we need to use the optimiser, but I suspect
that it will only be for isolated units, and the code generated will be
scrutinised most carefully.
Perhaps I should add that the compiler of which I am speaking is rather long
in the tooth now, and I am sure that, were we not constrained by certain
policies, we should have different experiences with a modern compiler.