public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/54387] New: Proc-pointer: Wronlgy accepts non-proc result variable on the RHS of a pointer assignment
@ 2012-08-27 22:11 burnus at gcc dot gnu.org
  2012-08-27 22:23 ` [Bug fortran/54387] " burnus at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-08-27 22:11 UTC (permalink / raw)
  To: gcc-bugs

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

             Bug #: 54387
           Summary: Proc-pointer: Wronlgy accepts non-proc result variable
                    on the RHS of a pointer assignment
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org
                CC: janus@gcc.gnu.org


Found by James Van Buskirk in c.l.f's "Function questions?" thread: 
https://groups.google.com/forum/?fromgroups=#!topic/comp.lang.fortran/r4PVbtaBnFM


The following program is invalid as "foo" inside the function is the result
variable - hence "i => foo" doesn't make sense.


function foo()
  integer :: foo
  procedure(), pointer :: i
  i => foo  ! Invalid RHS - in this context "foo" the RESULT variable
            ! To use the procedure name, a RESULT(...) has to be specified
end


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

* [Bug fortran/54387] Proc-pointer: Wronlgy accepts non-proc result variable on the RHS of a pointer assignment
  2012-08-27 22:11 [Bug fortran/54387] New: Proc-pointer: Wronlgy accepts non-proc result variable on the RHS of a pointer assignment burnus at gcc dot gnu.org
@ 2012-08-27 22:23 ` burnus at gcc dot gnu.org
  2012-09-12  9:17 ` [Bug fortran/54387] [F03] Wrongly accepts non-proc result variable on the RHS of a proc-pointer assignment janus at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-08-27 22:23 UTC (permalink / raw)
  To: gcc-bugs

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

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu.org

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-08-27 22:23:31 UTC ---
As postscript: (Intel, g95 and (with target attribute) PGI also accept the
program of comment 0.)

Crayftn correctly rejects the program of comment 0:
  i => foo  ! Invalid RHS - in this context "foo" the RESULT variable
       ^                                                              
  Invalid proc-target for this procedure pointer assignment statement.


For the following, the diagnostic works and one gets the message:
  Error: Expected a procedure for argument 'x' at (1)

function foo()
  integer :: foo
  call bar(foo)
contains
subroutine bar(x)
  integer, external :: x
end subroutine bar
end


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

* [Bug fortran/54387] [F03] Wrongly accepts non-proc result variable on the RHS of a proc-pointer assignment
  2012-08-27 22:11 [Bug fortran/54387] New: Proc-pointer: Wronlgy accepts non-proc result variable on the RHS of a pointer assignment burnus at gcc dot gnu.org
  2012-08-27 22:23 ` [Bug fortran/54387] " burnus at gcc dot gnu.org
@ 2012-09-12  9:17 ` janus at gcc dot gnu.org
  2012-09-16 20:12 ` janus at gcc dot gnu.org
  2012-09-16 20:19 ` janus at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: janus at gcc dot gnu.org @ 2012-09-12  9:17 UTC (permalink / raw)
  To: gcc-bugs

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

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2012-09-12
         AssignedTo|unassigned at gcc dot       |janus at gcc dot gnu.org
                   |gnu.org                     |
            Summary|Proc-pointer: Wronlgy       |[F03] Wrongly accepts
                   |accepts non-proc result     |non-proc result variable on
                   |variable on the RHS of a    |the RHS of a proc-pointer
                   |pointer assignment          |assignment
     Ever Confirmed|0                           |1

--- Comment #2 from janus at gcc dot gnu.org 2012-09-12 09:17:36 UTC ---
Here is a draft patch which rejects the test case and is free of testsuite
regressions:

Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c    (revision 190908)
+++ gcc/fortran/expr.c    (working copy)
@@ -3430,6 +3430,14 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_ex
           gfc_resolve_intrinsic (sym, &rvalue->where);
           attr = gfc_expr_attr (rvalue);
         }
+      /* Check for result of embracing function.  */
+      if (sym == gfc_current_ns->proc_name
+          && sym->attr.function && sym->result == sym)
+        {
+          gfc_error ("Invalid proc-target in procedure pointer assignment "
+             "at %L", &rvalue->where);
+          return FAILURE;
+        }
     }
       if (attr.abstract)
     {


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

* [Bug fortran/54387] [F03] Wrongly accepts non-proc result variable on the RHS of a proc-pointer assignment
  2012-08-27 22:11 [Bug fortran/54387] New: Proc-pointer: Wronlgy accepts non-proc result variable on the RHS of a pointer assignment burnus at gcc dot gnu.org
  2012-08-27 22:23 ` [Bug fortran/54387] " burnus at gcc dot gnu.org
  2012-09-12  9:17 ` [Bug fortran/54387] [F03] Wrongly accepts non-proc result variable on the RHS of a proc-pointer assignment janus at gcc dot gnu.org
@ 2012-09-16 20:12 ` janus at gcc dot gnu.org
  2012-09-16 20:19 ` janus at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: janus at gcc dot gnu.org @ 2012-09-16 20:12 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from janus at gcc dot gnu.org 2012-09-16 20:12:30 UTC ---
Author: janus
Date: Sun Sep 16 20:12:21 2012
New Revision: 191364

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=191364
Log:
2012-09-16  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/54387
    * expr.c (gfc_check_pointer_assign): Check for result of embracing
    function.

2012-09-16  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/54387
    * gfortran.dg/proc_ptr_38.f90: New.

Added:
    trunk/gcc/testsuite/gfortran.dg/proc_ptr_38.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/expr.c
    trunk/gcc/testsuite/ChangeLog


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

* [Bug fortran/54387] [F03] Wrongly accepts non-proc result variable on the RHS of a proc-pointer assignment
  2012-08-27 22:11 [Bug fortran/54387] New: Proc-pointer: Wronlgy accepts non-proc result variable on the RHS of a pointer assignment burnus at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2012-09-16 20:12 ` janus at gcc dot gnu.org
@ 2012-09-16 20:19 ` janus at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: janus at gcc dot gnu.org @ 2012-09-16 20:19 UTC (permalink / raw)
  To: gcc-bugs

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

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #4 from janus at gcc dot gnu.org 2012-09-16 20:19:09 UTC ---
Fixed with r191364. Closing.


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

end of thread, other threads:[~2012-09-16 20:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-27 22:11 [Bug fortran/54387] New: Proc-pointer: Wronlgy accepts non-proc result variable on the RHS of a pointer assignment burnus at gcc dot gnu.org
2012-08-27 22:23 ` [Bug fortran/54387] " burnus at gcc dot gnu.org
2012-09-12  9:17 ` [Bug fortran/54387] [F03] Wrongly accepts non-proc result variable on the RHS of a proc-pointer assignment janus at gcc dot gnu.org
2012-09-16 20:12 ` janus at gcc dot gnu.org
2012-09-16 20:19 ` 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).