------- Additional Comments From veksler at il dot ibm dot com 2005-06-08 14:43 ------- (In reply to comment #7) > It sure as hell is for those shops that require -Werror. > > But ok, I'll be happy if it's fixed for 4.0.2.
I think that your argument (as phrased) does not hold. Maybe you meant "It sure as hell is for those shops that require -Werror, in this particular instance". (Pardon my language, I just quoted the original ;-) Consider: 1. 1: int main() 2: { 3: int a; 4: never_return(); // the halting problem 5: return a; // Uninitialized variable? 6: } This is perfectly valid code and well defined, yet -Wall -Werror will reject it. No compiler will ever be able to determine if line 5 is ever reached. 2. 1: int main() 2: { 3: int a; 4: if(foo()) 5: a= bar(); 6: if(foo()) 7: return a; // Uninitialized variable? 8: return 0; 9: } Again, no compiler will be able to prove that a nontrivial foo() does not change over time (unless declared const/pure/whatever). And as a result, -Wall -Werror will reject valid code. In both examples, the user has a simple work-around, initialize 'a'. Adding initialization will make the code more stable, as foo() is no longer constrained to be const/pure (forgive me for not remembering if it is called pure or const). In contrast (as mentioned in comment #4), this PR and PR 21183 do not give the user the tools to shut this specific diagnostic instance up. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21951