Author: Vincent Diepeveen
Date: 10:02:32 08/08/99
Go up one level in this thread
On August 08, 1999 at 12:54:10, José de Jesús García Ruvalcaba wrote:
>On August 07, 1999 at 17:39:29, Paul J. Messmer wrote:
>
>>On August 07, 1999 at 16:44:40, Robert Hyatt wrote:
>>
>>>I see this _all_ the time. Just because a program runs correctly, doesn't
>>>mean it is a correct program. Bad memory references can luckily land on
>>>variables that don't mind getting overwritten, or which have a value of 0.
>>>Uninitialized variables (local) can be fortunate that they luck into a zero
>>>on the stack, until some new optimization changes this. Etc...
>>>
>>>Blaming the compiler is wrong, 99.99999999% of the time...
>>>
>>
>>Your point about correct runtime performace having no reflection on program
>>correctness is so true. However, let me offer a slighly different perspective
>>on this, from someone who has commerical development with code of reasonable
>>compuational complexity (but this was using "commercial" compilers, I cannot
>>speak to the (probably higher :) stability of gcc). For reasonably modern (but
>>still somewhat anecdotal) evidence, I would say that in the last five years I
>>have taken millions of lines of code that was "working" and compiled it under a
>>new compiler, or on a new platform and a new compiler. Out of the subsequent
>>run-time errors that arose, I would say that fully half of them were actually a
>>result of the compiler (optimizer) producing incorrect code. Off the top of my
>>head I can remember pounding my head into the wall tracking down and working
>>around at least nine such issues, on varying platforms and six compilers:
>>macintosh, dec alpha, and x86 (like every iteration of MSVC I've used :)
>>
>
> Now I think, if I ever write a chess engine I will develop it simultaneously in
>two different platforms. That will drastically reduce the number of bugs hidden
>by the compilers. And it is not very difficult to write portable code, it only
>requires some discipline.
>José.
I compile with 4 different compilers
windows
- msvc
- watcom
- intel
linux/unix (intel/sun)
- gcc
There are a lot of gcc derivates like pgcc, but they all produce the same
code on the different machines.
First time i tried intel compiler was great. Removed some array lookups
in my evaluation to array[-1] as i forgot a lot of times that
on the board there could be a lot of queens.
Weirdly those references weren't reported by a single compiler,
a single tool, and didn't produce a byte difference in the huge
verbose files (around a few hundred mb each depending upon how many
seconds i let it search, half a minute produces already 50mb)
Weird that only internal intel compiler found that for me.
>>Granted, in the other half of the cases the transition brought to light a latent
>>problem in the code that had been previously masked by the compiler. But I
>>would not be so quick to dismiss possible compiler issues if a run-time problem
>>arises with the optimizer on that did not exist under a different optimizing
>>compiler. Years of experience and investigation indicate issues like these
>>deserve careful inspection to determine the true culprit. Who knows what the
>>real ratio would be, had we some statistically valid results. But I'm thinkin'
>>that 99.99999999% percent isn't anywhere close to being within *my* compiler
>>confidence interval. :)
>>
>>---
>>Paul J. Messmer
>>http://www.spootopia.com
>>messmer@netcom.com
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.