[Bug fortran/50547] dummy procedure argument of PURE shall be PURE

2011-10-16 Thread janus at gcc dot gnu.org
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

2011-10-16 Thread janus at gcc dot gnu.org
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

2011-09-29 Thread janus at gcc dot gnu.org
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

2011-09-29 Thread janus at gcc dot gnu.org
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

2011-09-29 Thread janus at gcc dot gnu.org
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

2011-09-28 Thread janus at gcc dot gnu.org
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

2011-09-28 Thread janus at gcc dot gnu.org
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.