[Bug fortran/35820] internal compiler error with nested FORALL
burnus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Apr 4 09:41:00 GMT 2008
------- Comment #4 from burnus at gcc dot gnu dot org 2008-04-04 09:40 -------
I think the problem are related to nested FORALLs. The following is enough to
cause the valgrind error (add the needed definitions from comment
0). If I comment either the RDA(J1) assignment in the outer FORALL or the inner
FORALL, valgrind finds no error.
FORALL (J1 = 1:10)
RDA(J1) = RCA(J1) + 1.0_R1_KV
FORALL (J2 = 1:9)
IDA(J1,J2) = ICA(J1,J2) + 1
END FORALL
ENDFORALL
The line shown by valgrind is:
==629== at 0x463A23: resolve_code (resolve.c:5902)
If I go to the source, this is:
/* Record the current FORALL index. */
var_expr[nvar] = gfc_copy_expr (fa->var);
where of the function gfc_resolve_forall (i.e. the function has been inlined in
resolve_code).
I have somehow the feeling that total_var is too small as for forall_save != 0
the size is not properly set. I think the problem is that it is that
forall_save has a nonzero value as soon as "RDA(J1) =" is encountered and thus
the size is not properly increased when the inner FORALL is encountered. If one
swaps the order of "RDA(J1) =" and the inner FOREACH loop, valgrind finds not
error.
--
burnus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|internal compiler error with|internal compiler error with
|forall |nested FORALL
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35820
More information about the Gcc-bugs
mailing list