aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2018-03-25 03:47:28 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2018-03-25 03:47:28 +0000
commit8954606d17ebf8b6f26e856a9def11a4c674cb1b (patch)
treee2427cebad4c4ef6918a10f4f2bce9d25fcd62f7
parent017c243dff144d1f0b2e93d999bc5d7bb763bd27 (diff)
downloadgcc-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
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/symbol.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr69497.f908
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" }