public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE
@ 2011-09-28  9:07 zeccav at gmail dot com
  2011-09-28 19:29 ` [Bug fortran/50547] " janus at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: zeccav at gmail dot com @ 2011-09-28  9:07 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50547

             Bug #: 50547
           Summary: dummy procedure argument of PURE shall be PURE
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: zeccav@gmail.com


! dummy procedure argument of PURE shall be PURE 
! Fortran 95 12.6 at page 212 lines 23-24
! Fortran 2003 C1269
! Fortran 2008 C1279
      pure function f(proc)
      interface
       function proc()
       end
      end interface
      end


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/50547] dummy procedure argument of PURE shall be PURE
  2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
@ 2011-09-28 19:29 ` janus at gcc dot gnu.org
  2011-09-28 21:49 ` janus at gcc dot gnu.org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: janus at gcc dot gnu.org @ 2011-09-28 19:29 UTC (permalink / raw)
  To: gcc-bugs

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 "


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/50547] dummy procedure argument of PURE shall be PURE
  2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
  2011-09-28 19:29 ` [Bug fortran/50547] " janus at gcc dot gnu.org
@ 2011-09-28 21:49 ` janus at gcc dot gnu.org
  2011-09-29 11:52 ` janus at gcc dot gnu.org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: janus at gcc dot gnu.org @ 2011-09-28 21:49 UTC (permalink / raw)
  To: gcc-bugs

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.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/50547] dummy procedure argument of PURE shall be PURE
  2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
  2011-09-28 19:29 ` [Bug fortran/50547] " janus at gcc dot gnu.org
  2011-09-28 21:49 ` janus at gcc dot gnu.org
@ 2011-09-29 11:52 ` janus at gcc dot gnu.org
  2011-09-29 12:13 ` janus at gcc dot gnu.org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: janus at gcc dot gnu.org @ 2011-09-29 11:52 UTC (permalink / raw)
  To: gcc-bugs

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.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/50547] dummy procedure argument of PURE shall be PURE
  2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
                   ` (2 preceding siblings ...)
  2011-09-29 11:52 ` janus at gcc dot gnu.org
@ 2011-09-29 12:13 ` janus at gcc dot gnu.org
  2011-09-29 12:21 ` janus at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: janus at gcc dot gnu.org @ 2011-09-29 12:13 UTC (permalink / raw)
  To: gcc-bugs

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=gcc&view=rev&rev=179345
Log:
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.

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/50547] dummy procedure argument of PURE shall be PURE
  2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
                   ` (3 preceding siblings ...)
  2011-09-29 12:13 ` janus at gcc dot gnu.org
@ 2011-09-29 12:21 ` janus at gcc dot gnu.org
  2011-10-16 19:17 ` janus at gcc dot gnu.org
  2011-10-16 19:25 ` janus at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: janus at gcc dot gnu.org @ 2011-09-29 12:21 UTC (permalink / raw)
  To: gcc-bugs

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.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/50547] dummy procedure argument of PURE shall be PURE
  2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
                   ` (4 preceding siblings ...)
  2011-09-29 12:21 ` janus at gcc dot gnu.org
@ 2011-10-16 19:17 ` janus at gcc dot gnu.org
  2011-10-16 19:25 ` janus at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: janus at gcc dot gnu.org @ 2011-10-16 19:17 UTC (permalink / raw)
  To: gcc-bugs

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=gcc&view=rev&rev=180061
Log:
2011-10-16  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/50547
    * resolve.c (resolve_formal_arglist): Remove unneeded error message.
    Some reshuffling.

2011-10-16  Janus Weil  <janus@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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/50547] dummy procedure argument of PURE shall be PURE
  2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
                   ` (5 preceding siblings ...)
  2011-10-16 19:17 ` janus at gcc dot gnu.org
@ 2011-10-16 19:25 ` janus at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: janus at gcc dot gnu.org @ 2011-10-16 19:25 UTC (permalink / raw)
  To: gcc-bugs

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.


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-10-16 19:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-28  9:07 [Bug fortran/50547] New: dummy procedure argument of PURE shall be PURE zeccav at gmail dot com
2011-09-28 19:29 ` [Bug fortran/50547] " janus at gcc dot gnu.org
2011-09-28 21:49 ` janus at gcc dot gnu.org
2011-09-29 11:52 ` janus at gcc dot gnu.org
2011-09-29 12:13 ` janus at gcc dot gnu.org
2011-09-29 12:21 ` janus at gcc dot gnu.org
2011-10-16 19:17 ` janus at gcc dot gnu.org
2011-10-16 19:25 ` janus at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).