------- Comment #54 from dave at hiauly1 dot hia dot nrc dot ca 2006-01-15 06:46 ------- Subject: Re: [4.1/4.2 Regression] internal compiler error: verify_flow_info failed
> FWIW, the part of the C99 standard that talk about uninitialized automatic > variables are 3.17.2, 6.2.4, 6.7.8 (especially point 10), and 6.8. > > Also see Appendix J2 "Undefined behavior". > > To me, undefined behavior means that GCC could produce code to grow vegetables > on the south pole or to shoot bunnies to the moon, and still not be wrong ;-) > So it can certainly do whatever it pleases with the uninitialized variable > 'node' in the test case... I can't see where the value of "node" is "used" other than as arguments to function calls. The value of "node" is indeterminate but it's unclear to me from J2 whether this is sufficient to force undefined behavior for F2. HP cc and GCC versions prior to 4.0 don't use the same storage for "call_result" and "node" in spite of the fact that "node" is uninitialized. As a result, we have a portability issue between GCC 3 and 4. J2 is informative. Thus, the leap from indeterminate to undefined isn't obvious. Dave -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24626