diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2015-10-29 17:23:52 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2015-10-29 17:23:52 +0000 |
commit | 721be0f47c5c0bb994af6df6f2e2793f9bd13ee3 (patch) | |
tree | ae4fa32ce8f0b772d60ee73ba7796e58e8bfb990 | |
parent | 730f6d14253f7c8f44eff8c03beb5984e2f4c6cf (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr68054.f90 | 8 |
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 |