aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2015-10-29 17:23:52 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2015-10-29 17:23:52 +0000
commit721be0f47c5c0bb994af6df6f2e2793f9bd13ee3 (patch)
treeae4fa32ce8f0b772d60ee73ba7796e58e8bfb990
parent730f6d14253f7c8f44eff8c03beb5984e2f4c6cf (diff)
downloadgcc-721be0f47c5c0bb994af6df6f2e2793f9bd13ee3.zip
gcc-721be0f47c5c0bb994af6df6f2e2793f9bd13ee3.tar.gz
gcc-721be0f47c5c0bb994af6df6f2e2793f9bd13ee3.tar.bz2
re PR fortran/68054 (ICE on using protected attribute in program without program statement)
2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/68054 * decl.c (match_attr_spec): PROTECTED can only be a module. 2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/68054 * gfortran.dg/pr68054.f90: New test. From-SVN: r229542
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/decl.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr68054.f908
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5aed4bd..587045d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/68054
+ * decl.c (match_attr_spec): PROTECTED can only be a module.
+
+2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/67885
* trans-decl.c (generate_local_decl): Mark PARAMETER entities in
BLOCK construct.
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 5c34dc9..6a7f386 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -3959,7 +3959,9 @@ match_attr_spec (void)
break;
case DECL_PROTECTED:
- if (gfc_current_ns->proc_name->attr.flavor != FL_MODULE)
+ if (gfc_current_state () != COMP_MODULE
+ || (gfc_current_ns->proc_name
+ && gfc_current_ns->proc_name->attr.flavor != FL_MODULE))
{
gfc_error ("PROTECTED at %C only allowed in specification "
"part of a module");
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ee3ac60..0ec4102 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/68054
+ * gfortran.dg/pr68054.f90: New test.
+
+2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/67885
* gfortran.dg/pr67885.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr68054.f90 b/gcc/testsuite/gfortran.dg/pr68054.f90
new file mode 100644
index 0000000..c4b6a34
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr68054.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR fortran/68054
+! Original code contributed by Gerhard Steinmetz
+! gerhard dot steinmetz dot fortran at t-online dot de
+!
+!program p
+ real, protected :: x ! { dg-error "only allowed in specification" }
+end