Suspicion of regression in uninitialized value detection

Robert Dewar dewar@adacore.com
Tue Dec 6 15:28:00 GMT 2011


On 12/6/2011 10:18 AM, David Brown wrote:

> Unfortunately, there are no such tools available that compare with gcc
> and its warnings.

It's surprising this is true of C, it's certainly not true of Ada,
where CodePeer can do a much better job than GNAT+gcc together on
this kind of issue.

> Every time I have looked at this, I have always come back to gcc as the
> best free general-purpose tool for static analysis.  I also think it has
> the best starting point for such tools - after all, gcc does a great
> deal of analysis on the code already, much of which would need
> duplicating in a lint program.  I don't see any fundamental reason why a
> linter could do any better than gcc for such warnings.

Well I am not sure what you mean by a linter or lint program, but
obviously it is possible for a static analysis program to do far
better than the compiler, since it can do inter-unit analysis
that is out of reach of the compiler.

> Don't get me wrong here - I understand that making accurate
> uninitialised warnings is a hard problem, especially while producing
> optimal code, and that it is not likely to be a high priority for the
> gcc developers.  But I don't think I am alone in saying it is a feature
> that gcc users appreciate, that we prefer not to see regressions in such
> features, and that we would be very happy to see even more accurate
> warnings.

One feature in GNAT that is really valuable for addressing uninitialized
variables is the option to set all otherwise uninitialized variables to 
a constant value that can be changed at bind time, or even at run time
with an environment variable. Then you run with different values, and if
you get a different behavior, you know you have an uninit variable.

Of course good compiler warnings, and warnings from a tool like codepeer
are very valuable in smoking out as many cases prior to testing as
possible.
>
> mvh.,
>
> David



More information about the Gcc mailing list