diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2018-03-25 03:47:28 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2018-03-25 03:47:28 +0000 |
commit | 8954606d17ebf8b6f26e856a9def11a4c674cb1b (patch) | |
tree | e2427cebad4c4ef6918a10f4f2bce9d25fcd62f7 /gcc | |
parent | 017c243dff144d1f0b2e93d999bc5d7bb763bd27 (diff) | |
download | gcc-8954606d17ebf8b6f26e856a9def11a4c674cb1b.zip gcc-8954606d17ebf8b6f26e856a9def11a4c674cb1b.tar.gz gcc-8954606d17ebf8b6f26e856a9def11a4c674cb1b.tar.bz2 |
re PR fortran/69497 (ICE in gfc_free_namespace, at fortran/symbol.c:3701)
2018-03-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/89497
* symbol.c (gfc_free_namespace): Delete the assert and only if
refs count is equals zero, free the namespace. Otherwise,
something is halfway and other errors will resound.
* gfortran.dg/pr89497.f90: New test.
Co-Authored-By: Dominique d'Humieres <dominiq@gcc.gnu.org>
From-SVN: r258839
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr69497.f90 | 8 |
4 files changed, 23 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 12348f1..9ae0cc7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2018-03-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> + Dominique d'Humieres <dominiq@gcc.gnu.org> + + PR fortran/84506 + * symbol.c (gfc_free_namespace): Delete the assert and only if + refs count is equals zero, free the namespace. Otherwise, + something is halfway and other errors will resound. + 2018-03-24 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/70068 diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index ce6b1e9..997d90b 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -4037,10 +4037,9 @@ gfc_free_namespace (gfc_namespace *ns) return; ns->refs--; - if (ns->refs > 0) - return; - gcc_assert (ns->refs == 0); + if (ns->refs != 0) + return; gfc_free_statements (ns->code); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1e1f515..1ea6029 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-03-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/89497 + * gfortran.dg/pr89497.f90: New test. + 2018-03-24 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/70068 diff --git a/gcc/testsuite/gfortran.dg/pr69497.f90 b/gcc/testsuite/gfortran.dg/pr69497.f90 new file mode 100644 index 0000000..7b57ee1 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr69497.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR89497 +program p + block + do + end block ! { dg-error "Expecting END DO statement" } +end ! { dg-error "END DO statement expected" } +! { dg-excess-errors "Unexpected end of file" } |