[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#401496: gfortran-4.1 bug / ICE in gfc_conv_constant at fortran-trans-const.c:348



To confirm Martin's comment: This is indeed invalid. In Fortran, when a local variable in a function is initialized in its declaration, that means that it is initialized only once when the program starts (or effectively so), and its value is then SAVE'd to subsequent calls of that function. Thus, the initialization must be a constant value that does not depend on the arguments of the function, because there are no arguments when the initial value is computed.

This is quite unlike C, where "int i = 1" just shorthand for "int i; i = 1".

My guess is the original code this was reduced from wouldn't do what you want even if it did compile, because of the fact that the initialization is only run once and then the final value SAVE'd until the next iteration. This seems to be a fairly common bug.

Regardless, this obviously should be reporting a proper error message rather than ICE'ing. Thanks for forwarding it along!

- Brooks Moses (GFortran maintainer)




Reply to: