[Bug fortran/50547] dummy procedure argument of PURE shall be PURE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547 --- Comment #6 from janus at gcc dot gnu.org 2011-10-16 19:17:03 UTC --- Author: janus Date: Sun Oct 16 19:16:59 2011 New Revision: 180061 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=180061 Log: 2011-10-16 Janus Weil ja...@gcc.gnu.org PR fortran/50547 * resolve.c (resolve_formal_arglist): Remove unneeded error message. Some reshuffling. 2011-10-16 Janus Weil ja...@gcc.gnu.org PR fortran/50547 * gfortran.dg/elemental_args_check_4.f90: New. Added: trunk/gcc/testsuite/gfortran.dg/elemental_args_check_4.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog
[Bug fortran/50547] dummy procedure argument of PURE shall be PURE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547 janus at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #7 from janus at gcc dot gnu.org 2011-10-16 19:24:35 UTC --- Finally closing this one. I noticed that in 'resolve_formal_arglist' there are two separate checks for procedure dummies in elemental procedures (for functions/subroutines). Those clearly could be unified. Done with r180061. Finally closing this one.
[Bug fortran/50547] dummy procedure argument of PURE shall be PURE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547 --- Comment #3 from janus at gcc dot gnu.org 2011-09-29 11:23:52 UTC --- Here is a better version which is regression-free: Index: gcc/fortran/resolve.c === --- gcc/fortran/resolve.c (revision 179338) +++ gcc/fortran/resolve.c (working copy) @@ -269,18 +269,21 @@ 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; Will commit as obvious.
[Bug fortran/50547] dummy procedure argument of PURE shall be PURE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547 --- Comment #4 from janus at gcc dot gnu.org 2011-09-29 11:57:40 UTC --- Author: janus Date: Thu Sep 29 11:57:35 2011 New Revision: 179345 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=179345 Log: 2011-09-29 Janus Weil ja...@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 ja...@gcc.gnu.org PR fortran/50547 * gfortran.dg/pure_formal_proc_3.f90: New. PR fortran/50553 * gfortran.dg/stfunc_7.f90: New. Added: trunk/gcc/testsuite/gfortran.dg/pure_formal_proc_3.f90 trunk/gcc/testsuite/gfortran.dg/stfunc_7.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/resolve.c trunk/gcc/fortran/symbol.c trunk/gcc/testsuite/ChangeLog
[Bug fortran/50547] dummy procedure argument of PURE shall be PURE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547 --- Comment #5 from janus at gcc dot gnu.org 2011-09-29 12:14:03 UTC --- Comment #0 is fixed with r179345. I noticed that in 'resolve_formal_arglist' there are two separate checks for procedure dummies in elemental procedures (for functions/subroutines). Those clearly could be unified.
[Bug fortran/50547] dummy procedure argument of PURE shall be PURE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547 janus at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Keywords||accepts-invalid Last reconfirmed||2011-09-28 CC||janus at gcc dot gnu.org AssignedTo|unassigned at gcc dot |janus at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #1 from janus at gcc dot gnu.org 2011-09-28 19:20:26 UTC --- We do have such a check, we just need to trigger it. Draft patch: Index: gcc/fortran/resolve.c === --- gcc/fortran/resolve.c (revision 179310) +++ gcc/fortran/resolve.c (working copy) @@ -269,8 +269,12 @@ resolve_formal_arglist (gfc_symbol *proc) if (sym-attr.if_source != IFSRC_UNKNOWN) resolve_formal_arglist (sym); - if (sym-attr.subroutine || sym-attr.external || sym-attr.intrinsic) + if (sym-attr.subroutine || sym-attr.function || sym-attr.external + || sym-attr.intrinsic || sym-attr.flavor == FL_PROCEDURE) { + /* Some checks for dummy procedures. */ + + /* Check for F08:C1279. */ if (gfc_pure (proc) !gfc_pure (sym)) { gfc_error (Dummy procedure '%s' of PURE procedure at %L must
[Bug fortran/50547] dummy procedure argument of PURE shall be PURE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547 --- Comment #2 from janus at gcc dot gnu.org 2011-09-28 21:40:30 UTC --- This patch causes one testsuite failure on elemental_args_check_2.f90, due to a slightly changed error message.