This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Suspicion of regression in uninitialized value detection


On 06/12/2011 14:26, Richard Guenther wrote:
On Tue, Dec 6, 2011 at 2:13 PM, Dave Korn<dave.korn.cygwin@gmail.com> wrote:
On 05/12/2011 21:43, Jeff Law wrote:

When the uninitialized&  initialized to 10 paths meet, the compiler
(correctly) pretends the value for the uninitialized path is 10 as
well.

Wouldn't that be a good point at which to issue an uninitialised-use warning?

No. If it were we would be warning for conditionally uninitialized uses in the early uninitialized warning pass which we don't do because of the way too many false positives.

Richard.

I would say it's better to have false positives in cases like this, than false negatives, because there are easy ways to remove the false positives. It is exactly in cases like this, with complex conditional initialisations, that you want the warning to be sure that you've covered everything. My impression (without having done careful testing) is that the compiler is quite good at spotting in which paths the variable is initialised and uninitialised, and that this has improved with newer versions of gcc. This means the warning has the potential to be more accurate and thus more useful.


In cases when you know you've initialised the variable in all possible use cases, but the compiler can't see that, then you can initialise the variable to itself (as long as you don't use the -Winit-self flag) to disable the warning on that variable. In the great majority of cases, you can also initialise the variable to some value without having any noticeable effect on the program size or speed.

Just my opinion, of course.

mvh.,

David



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]