public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/49255] New: -fcheck=pointer diagnosts too much: Passing NULL pointer to OPTIONAL argument
@ 2011-06-01 13:12 burnus at gcc dot gnu.org
  2011-06-02  5:55 ` [Bug fortran/49255] -fcheck=pointer diagnoses " burnus at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2011-06-01 13:12 UTC (permalink / raw)
  To: gcc-bugs

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

           Summary: -fcheck=pointer diagnosts too much: Passing NULL
                    pointer to OPTIONAL argument
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Keywords: diagnostic, patch, rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org


Valid F2008 test case:

integer,pointer :: ptr => null()
call foo(ptr)
contains
  subroutine foo (x)
    integer, optional :: x
    print *, present (x)
  end subroutine foo
end


But with -fcheck=pointer, gfortran prints at run time:

At line 2 of file test.f90
Fortran runtime error: Pointer actual argument 'ptr' is not associated


--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -3269,13 +3269,16 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
          else
            goto end_pointer_check;

-          if (attr.optional)
+          if (attr.optional
+             && ((gfc_option.allow_std & GFC_STD_F2008) == 0
+                 || attr.proc_pointer))
            {
               /* If the actual argument is an optional pointer/allocatable and
                 the formal argument takes an nonpointer optional value,
                 it is invalid to pass a non-present argument on, even
                 though there is no technical reason for this in gfortran.
-                See Fortran 2003, Section 12.4.1.6 item (7)+(8).  */
+                See Fortran 2003, Section 12.4.1.6 item (7)+(8).
+                In Fortran 2008 that's allowed; cf. 12.5.2.12.  */
              tree present, null_ptr, type;

              if (attr.allocatable


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

* [Bug fortran/49255] -fcheck=pointer diagnoses too much: Passing NULL pointer to OPTIONAL argument
  2011-06-01 13:12 [Bug fortran/49255] New: -fcheck=pointer diagnosts too much: Passing NULL pointer to OPTIONAL argument burnus at gcc dot gnu.org
@ 2011-06-02  5:55 ` burnus at gcc dot gnu.org
  2011-06-05 21:12 ` burnus at gcc dot gnu.org
  2011-06-05 21:13 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2011-06-02  5:55 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-06-02 05:54:53 UTC ---
The patch was not quite correct...

Submitted patch: http://gcc.gnu.org/ml/fortran/2011-06/msg00015.html


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

* [Bug fortran/49255] -fcheck=pointer diagnoses too much: Passing NULL pointer to OPTIONAL argument
  2011-06-01 13:12 [Bug fortran/49255] New: -fcheck=pointer diagnosts too much: Passing NULL pointer to OPTIONAL argument burnus at gcc dot gnu.org
  2011-06-02  5:55 ` [Bug fortran/49255] -fcheck=pointer diagnoses " burnus at gcc dot gnu.org
@ 2011-06-05 21:12 ` burnus at gcc dot gnu.org
  2011-06-05 21:13 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2011-06-05 21:12 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-06-05 21:11:49 UTC ---
Author: burnus
Date: Sun Jun  5 21:11:46 2011
New Revision: 174663

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174663
Log:
2011-06-05  Tobias Burnus  <burnus@net-b.de>

        PR fortran/49255
        * trans-expr.c (gfc_conv_procedure_call): Fix -fcheck=pointer
        for F2008.

2011-06-05  Tobias Burnus  <burnus@net-b.de>

        PR fortran/49255
        * gfortran.dg/pointer_check_9.f90: New.
        * gfortran.dg/pointer_check_10.f90: New.


Added:
    trunk/gcc/testsuite/gfortran.dg/pointer_check_10.f90
    trunk/gcc/testsuite/gfortran.dg/pointer_check_9.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/testsuite/ChangeLog


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

* [Bug fortran/49255] -fcheck=pointer diagnoses too much: Passing NULL pointer to OPTIONAL argument
  2011-06-01 13:12 [Bug fortran/49255] New: -fcheck=pointer diagnosts too much: Passing NULL pointer to OPTIONAL argument burnus at gcc dot gnu.org
  2011-06-02  5:55 ` [Bug fortran/49255] -fcheck=pointer diagnoses " burnus at gcc dot gnu.org
  2011-06-05 21:12 ` burnus at gcc dot gnu.org
@ 2011-06-05 21:13 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2011-06-05 21:13 UTC (permalink / raw)
  To: gcc-bugs

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

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

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

--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-06-05 21:13:26 UTC ---
FIXED (4.7 trunk).


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

end of thread, other threads:[~2011-06-05 21:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-01 13:12 [Bug fortran/49255] New: -fcheck=pointer diagnosts too much: Passing NULL pointer to OPTIONAL argument burnus at gcc dot gnu.org
2011-06-02  5:55 ` [Bug fortran/49255] -fcheck=pointer diagnoses " burnus at gcc dot gnu.org
2011-06-05 21:12 ` burnus at gcc dot gnu.org
2011-06-05 21:13 ` burnus 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).