named warnings & individual warning control
Stan Shebs
shebs@apple.com
Sat Jun 26 01:21:00 GMT 2004
Joe Buck wrote:
>On Fri, Jun 25, 2004 at 04:02:19PM -0700, Stan Shebs wrote:
>
>>So if I understand what you're getting at, it would be to have some
>>weaker form of flow analysis in the front end to implement the
>>uninitialized warnings, even if that means reporting some false
>>positives? I can go for that; if it takes a complicated analysis to
>>determine that a variable really is initialized before use, there's a
>>good chance that the code is only working correctly by accident, and
>>that minor changes - say, just before going into production use, per
>>Murphy - would break it.
>>
>
>Not really. The most common false positive for uninitialized variable
>warnings takes this form:
>
> T* ptr_T;
> bool ptr_is_valid = false;
> if (some_fancy_test()) {
> ptr_T = foo();
> ptr_is_valid = true;
> }
> do_something_else();
> if (ptr_is_valid) {
> do_something_with(ptr_T);
> }
>
Two answers come to mind:
T* ptr_T = NULL;
If this default initialization is provably unnecessary, then it
will be removed, right? If it's not redundant, then a good thing
it was there. This will take some user education before they will
believe it gets removed.
Or,
T* ptr_T __attribute__((I_know_what_Im_doing));
to suppress the warning selectively, if the user absolutely
must make it go away.
The second doesn't preclude the first of course.
Stan
(now off to see Fahrenheit 9/11! Keeping priorities straight :-) )
More information about the Gcc
mailing list