re PR fortran/68054 (ICE on using protected attribute in program without program...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 29 Oct 2015 17:23:52 +0000 (17:23 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 29 Oct 2015 17:23:52 +0000 (17:23 +0000)
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

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr68054.f90 [new file with mode: 0644]

index 5aed4bdde881aca20926c42f892d602d0d6ae54d..587045d057930371f935b30f06a3254513b5c6d4 100644 (file)
@@ -1,3 +1,8 @@
+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
index 5c34dc94387cdd1b3faffdf3867ed5fe532ed678..6a7f3864ded44e09dcaf5dcd94dc858c6c742ce5 100644 (file)
@@ -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");
index ee3ac60efef997d62f07d3fa79c09fb1cc472bcd..0ec41025170e32bee501db7ea9722ea70a8cb96b 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gfortran.dg/pr68054.f90 b/gcc/testsuite/gfortran.dg/pr68054.f90
new file mode 100644 (file)
index 0000000..c4b6a34
--- /dev/null
@@ -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