Jeffrey A Law wrote:
> On Mon, 2005-10-31 at 17:11 -0800, Mark Mitchell wrote:
> 
> 
>>>Certainly if we can't prove f always returns a nonzero value, then a
>>>warning should be issued.  If we do prove f always returns a nonzero
>>>value, then I think it becomes unclear if we should generate a warning.
>>
>>I don't think it's unclear; I think it should be a warning. :-)  The
>>fact that f always returns a nonzero value may be a function of
>>something about the current environment; I think people want this
>>warning to tell them something about the code, semi-independent of the
>>current environment.  It may be that I've got different ideas about how
>>this ought to work from some others in the community.
> 
> We clearly disagree then.  Though my 15+ years of working with GCC I've
> seen far more complaints about false positives than missing instances
> of this warning.

OK, sure; we can agree to disagree.

> I think the answer here is that there is no single answer that works
> best for everyone.  I hate to say that because I don't like the always
> problematical "switch creep" in GCC, but I feel in this case giving the
> user control over whether or not they want these additional warnings is
> warranted.

I think that's probably right.  Ada already issues these kinds of
warnings from the front-end, precisely to solve the kinds of user
complaints I'm raising; if we're going to avoid doing that in other
front-ends, we need to find some way to meet in the middle.  A switch
may be the least bad alternative, for all concerned.

>>Why doesn't that boil down to just warning about all the variables
>>marked by the first pass, either right at the time of the first pass, or
>>later during the second pass?
> 
> It boils down to being able to issue distinct warnings for the two
> cases.  There's a difference between noting that a variable might have
> been used uninitialized and noting that a variable might have been
> used uninitialized, but those problem uses were removed due to
> optimizations or certain paths in the CFG were proven unexecutable.

OK, now I get it.  Yes, being able to distinguish these classes seems
useful.

-- 
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304

Reply via email to