Created attachment 30159 [details] Test case The attached program compiles with GCC 4.5, 4.6 and 4.7 - but with GCC 4.8 and GCC 4.9, it fails with: f951: internal compiler error: in gfc_enforce_clean_symbol_state, at fortran/symbol.c:3674 0x5f2307 gfc_enforce_clean_symbol_state() ../../gcc/fortran/symbol.c:3674
Good: 3caa5c539819385bd6bcfc5947b51bf8559f8ce0 2012-11-30 Rev. 193988 Bad: 4d228ee6fa4a287bae84024820e847bf95905162 2012-12-01 Rev. 194018 Hence, the following patch is the culprit: http://gcc.gnu.org/r194016 2012-12-01 Alessandro Fanfarillo <alessandro.fanfarillo@gmail.com> Paul Thomas <pault@gcc.gnu.org> PR fortran/46897
Draft patch: --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -9299,4 +9299,5 @@ get_temp_from_expr (gfc_expr *e, gfc_namespace *ns) tmp->n.sym->attr.dimension = 0; + gfc_commit_symbol (tmp->n.sym); gfc_set_sym_referenced (tmp->n.sym); gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL);
Le 22/05/2013 11:22, burnus at gcc dot gnu.org a écrit : > --- a/gcc/fortran/resolve.c > +++ b/gcc/fortran/resolve.c > @@ -9299,4 +9299,5 @@ get_temp_from_expr (gfc_expr *e, gfc_namespace *ns) > tmp->n.sym->attr.dimension = 0; > > + gfc_commit_symbol (tmp->n.sym); > gfc_set_sym_referenced (tmp->n.sym); > gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL); > Without looking at the code, gfc_commit_symbol should come after the gfc_set_sym_referenced, gfc_add_flavor, etc, and any modification made to tmp->n.sym.
Author: burnus Date: Wed May 22 12:43:55 2013 New Revision: 199196 URL: http://gcc.gnu.org/viewcvs?rev=199196&root=gcc&view=rev Log: 2013-05-22 Tobias Burnus <burnus@net-b.de> PR fortran/57364 * resolve.c (get_temp_from_expr): Commit created sym. 2013-05-22 Tobias Burnus <burnus@net-b.de> PR fortran/57364 * gfortran.dg/defined_assignment_6.f90: New. Added: trunk/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog
GCC 4.8.1 has been released.
Author: burnus Date: Tue Jun 4 07:11:12 2013 New Revision: 199635 URL: http://gcc.gnu.org/viewcvs?rev=199635&root=gcc&view=rev Log: 2013-06-04 Tobias Burnus <burnus@net-b.de> Backport from mainline 2013-05-22 Tobias Burnus <burnus@net-b.de> PR fortran/57364 * resolve.c (get_temp_from_expr): Commit created sym. 2013-06-04 Tobias Burnus <burnus@net-b.de> Backport from mainline 2013-05-22 Tobias Burnus <burnus@net-b.de> PR fortran/57364 * gfortran.dg/defined_assignment_6.f90: New. Added: branches/gcc-4_8-branch/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 Modified: branches/gcc-4_8-branch/gcc/fortran/ChangeLog branches/gcc-4_8-branch/gcc/fortran/resolve.c branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
FIXED on the trunk (for 4.9) and on the 4.8 branch.