aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNicolas Koenig <koenigni@student.ethz.ch>2017-04-10 22:58:21 +0200
committerNicolas Koenig <koenigni@gcc.gnu.org>2017-04-10 20:58:21 +0000
commita2cb1196cf9a8e46e0bbaa2998b98ecbc8ecd595 (patch)
treeb37c089fe660171581ae1e8c7c6220ba7b269715 /gcc
parentb447b28c5e434eb949e30985a7c2d49f6aa592fe (diff)
downloadgcc-a2cb1196cf9a8e46e0bbaa2998b98ecbc8ecd595.zip
gcc-a2cb1196cf9a8e46e0bbaa2998b98ecbc8ecd595.tar.gz
gcc-a2cb1196cf9a8e46e0bbaa2998b98ecbc8ecd595.tar.bz2
re PR fortran/69498 (ICE on disjunct cases with displaced or incomplete embedded statement)
2017-04-10 Nicolas Koenig <koenigni@student.ethz.ch> Paul Thomas <pault@gcc.gnu.org> PR fortran/69498 * module.c (gfc_match_submodule): Add error if function is called in the wrong state. 2017-04-10 Nicolas Koenig <koenigni@student.ethz.ch> PR fortran/69498 * gfortran.dg/submodule_unexp.f90: Modified test to account for new error. * gfortran.dg/submodule_twice.f90: New Test Co-Authored-By: Paul Thomas <pault@gcc.gnu.org> From-SVN: r246826
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/module.c7
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gfortran.dg/submodule_twice.f907
-rw-r--r--gcc/testsuite/gfortran.dg/submodule_unexp.f902
5 files changed, 30 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 7825295..9f31ad9 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+
+2017-04-10 Nicolas Koenig <koenigni@student.ethz.ch>
+ Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/69498
+ * module.c (gfc_match_submodule): Add error
+ if function is called in the wrong state.
+
2017-04-10 Janus Weil <janus@gcc.gnu.org>
PR fortran/80046
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 60adde3..28b8ea1 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -741,6 +741,13 @@ gfc_match_submodule (void)
if (!gfc_notify_std (GFC_STD_F2008, "SUBMODULE declaration at %C"))
return MATCH_ERROR;
+ if (gfc_current_state () != COMP_NONE)
+ {
+ gfc_error ("SUBMODULE declaration at %C cannot appear within "
+ "another scoping unit");
+ return MATCH_ERROR;
+ }
+
gfc_new_block = NULL;
gcc_assert (module_list == NULL);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 746150b..2104392 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2017-04-10 Nicolas Koenig <koenigni@student.ethz.ch>
+
+ PR fortran/69498
+ * gfortran.dg/submodule_unexp.f90: Modified test
+ to account for new error.
+ * gfortran.dg/submodule_twice.f90: New Test
+
2017-04-10 Jakub Jelinek <jakub@redhat.com>
PR c++/80176
diff --git a/gcc/testsuite/gfortran.dg/submodule_twice.f90 b/gcc/testsuite/gfortran.dg/submodule_twice.f90
new file mode 100644
index 0000000..fdb4dcb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/submodule_twice.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/69498
+! This used to ICE
+program main
+ submodule (m) sm ! { dg-error "SUBMODULE declaration at" }
+ submodule (m2) sm2 ! { dg-error "SUBMODULE declaration at" }
+end program
diff --git a/gcc/testsuite/gfortran.dg/submodule_unexp.f90 b/gcc/testsuite/gfortran.dg/submodule_unexp.f90
index 43a0553..39b57a5 100644
--- a/gcc/testsuite/gfortran.dg/submodule_unexp.f90
+++ b/gcc/testsuite/gfortran.dg/submodule_unexp.f90
@@ -3,6 +3,6 @@
! This used to ICE
program p
type t
- submodule (m) sm ! { dg-error "Unexpected SUBMODULE statement at" }
+ submodule (m) sm ! { dg-error "SUBMODULE declaration at" }
end type
end