diff options
author | Janus Weil <janus@gcc.gnu.org> | 2011-09-29 13:57:35 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2011-09-29 13:57:35 +0200 |
commit | 4056cc1ba5e5590529b257a12f80270d552019b9 (patch) | |
tree | 6eb80c27b0e8d8f204611e0d47e28d64aefa066d /gcc/fortran/resolve.c | |
parent | 6c7dfafee68e3c18aa6c0f7c42e3f86bce196d7e (diff) | |
download | gcc-4056cc1ba5e5590529b257a12f80270d552019b9.zip gcc-4056cc1ba5e5590529b257a12f80270d552019b9.tar.gz gcc-4056cc1ba5e5590529b257a12f80270d552019b9.tar.bz2 |
re PR fortran/50547 (dummy procedure argument of PURE shall be PURE)
2011-09-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/50547
* resolve.c (resolve_formal_arglist): Fix pureness check for dummy
functions.
PR fortran/50553
* symbol.c (check_conflict): Forbid TARGET attribute for statement
functions.
2011-09-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/50547
* gfortran.dg/pure_formal_proc_3.f90: New.
PR fortran/50553
* gfortran.dg/stfunc_7.f90: New.
From-SVN: r179345
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 13ecf1c..84db3dd 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -269,18 +269,21 @@ resolve_formal_arglist (gfc_symbol *proc) if (sym->attr.if_source != IFSRC_UNKNOWN) resolve_formal_arglist (sym); + /* F08:C1279. */ + if (gfc_pure (proc) + && sym->attr.flavor == FL_PROCEDURE && !gfc_pure (sym)) + { + gfc_error ("Dummy procedure '%s' of PURE procedure at %L must " + "also be PURE", sym->name, &sym->declared_at); + continue; + } + if (sym->attr.subroutine || sym->attr.external || sym->attr.intrinsic) { - if (gfc_pure (proc) && !gfc_pure (sym)) - { - gfc_error ("Dummy procedure '%s' of PURE procedure at %L must " - "also be PURE", sym->name, &sym->declared_at); - continue; - } - if (proc->attr.implicit_pure && !gfc_pure(sym)) proc->attr.implicit_pure = 0; + /* F08:C1289. */ if (gfc_elemental (proc)) { gfc_error ("Dummy procedure at %L not allowed in ELEMENTAL " @@ -382,7 +385,7 @@ resolve_formal_arglist (gfc_symbol *proc) if (gfc_elemental (proc)) { - /* F2008, C1289. */ + /* F08:C1289. */ if (sym->attr.codimension) { gfc_error ("Coarray dummy argument '%s' at %L to elemental " |