public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/39577]  New: False positive with -fcheck=recursion
@ 2009-03-29 11:04 burnus at gcc dot gnu dot org
  2009-03-29 11:21 ` [Bug fortran/39577] " dominiq at lps dot ens dot fr
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-03-29 11:04 UTC (permalink / raw)
  To: gcc-bugs

The following program is valid but with -fcheck=recursion the following error
is shown:

At line 1 of file aa.f90
Fortran runtime error: Recursive call to nonrecursive procedure 'test'

There might be more such cases if one digs (entry? some strange label returns
of F77? ...). But we might be lucky and everything is fixed at one place.

Dump:
  goto __return_test;
  __return_test:;
  return __result_test;
  is_recursive.0 = 0;


integer function test()
  test = 5
  return
  ! not reachable
end function test

program main
integer :: a
a = test()
a = test()
end program main


-- 
           Summary: False positive with -fcheck=recursion
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: burnus at gcc dot gnu dot org


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


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

* [Bug fortran/39577] False positive with -fcheck=recursion
  2009-03-29 11:04 [Bug fortran/39577] New: False positive with -fcheck=recursion burnus at gcc dot gnu dot org
@ 2009-03-29 11:21 ` dominiq at lps dot ens dot fr
  2009-03-29 19:20 ` burnus at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: dominiq at lps dot ens dot fr @ 2009-03-29 11:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from dominiq at lps dot ens dot fr  2009-03-29 11:21 -------
Confirmed, the error seems to be due to the second call to test(): usual
suspect = unitialized variable?


-- 


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


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

* [Bug fortran/39577] False positive with -fcheck=recursion
  2009-03-29 11:04 [Bug fortran/39577] New: False positive with -fcheck=recursion burnus at gcc dot gnu dot org
  2009-03-29 11:21 ` [Bug fortran/39577] " dominiq at lps dot ens dot fr
@ 2009-03-29 19:20 ` burnus at gcc dot gnu dot org
  2009-03-30 20:35 ` burnus at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-03-29 19:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from burnus at gcc dot gnu dot org  2009-03-29 19:20 -------
> the error seems to be due to the second call to test():
> usual suspect = unitialized variable?

No - the problem is a missing "is_recursive = 0" (see dump in comment 0).

The problem is that the variable needs to be set in trans-stmt.c's
gfc_trans_return while the variable is created in gfc_generate_function_code.
The question is now, how to make the TREE available to gfc_trans_return.


-- 


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


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

* [Bug fortran/39577] False positive with -fcheck=recursion
  2009-03-29 11:04 [Bug fortran/39577] New: False positive with -fcheck=recursion burnus at gcc dot gnu dot org
  2009-03-29 11:21 ` [Bug fortran/39577] " dominiq at lps dot ens dot fr
  2009-03-29 19:20 ` burnus at gcc dot gnu dot org
@ 2009-03-30 20:35 ` burnus at gcc dot gnu dot org
  2009-04-04 21:38 ` burnus at gcc dot gnu dot org
  2009-04-04 21:46 ` burnus at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-03-30 20:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from burnus at gcc dot gnu dot org  2009-03-30 20:34 -------
I wonder whether a global variable (in trans-decl.c, exported in trans.h) is
not the easiest. There can only be one procedure at a time.
For the existing trans-decl.c one should put a if(!attr.function) as for
functions the code is unreachable (the return happens earlier).


-- 


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


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

* [Bug fortran/39577] False positive with -fcheck=recursion
  2009-03-29 11:04 [Bug fortran/39577] New: False positive with -fcheck=recursion burnus at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2009-03-30 20:35 ` burnus at gcc dot gnu dot org
@ 2009-04-04 21:38 ` burnus at gcc dot gnu dot org
  2009-04-04 21:46 ` burnus at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-04-04 21:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from burnus at gcc dot gnu dot org  2009-04-04 21:38 -------
Subject: Bug 39577

Author: burnus
Date: Sat Apr  4 21:38:12 2009
New Revision: 145552

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145552
Log:
2009-04-04  Tobias Burnus  <burnus@net-b.de>

        PR fortran/39577
        * trans-decl.c (gfc_generate_function_code): Move recursive
        check to the right position.

2009-04-04  Tobias Burnus  <burnus@net-b.de>

        PR fortran/39577
        * gfortran.dg/recursive_check_8.f90: New.
        * gfortran.dg/recursive_check_9.f90: New.
        * gfortran.dg/recursive_check_10.f90: New.
        * gfortran.dg/recursive_check_11.f90: New.
        * gfortran.dg/recursive_check_12.f90: New.
        * gfortran.dg/recursive_check_13.f90: New.
        * gfortran.dg/recursive_check_14.f90: New.


Added:
    trunk/gcc/testsuite/gfortran.dg/recursive_check_10.f90
    trunk/gcc/testsuite/gfortran.dg/recursive_check_11.f90
    trunk/gcc/testsuite/gfortran.dg/recursive_check_12.f90
    trunk/gcc/testsuite/gfortran.dg/recursive_check_13.f90
    trunk/gcc/testsuite/gfortran.dg/recursive_check_14.f90
    trunk/gcc/testsuite/gfortran.dg/recursive_check_8.f90
    trunk/gcc/testsuite/gfortran.dg/recursive_check_9.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-decl.c
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug fortran/39577] False positive with -fcheck=recursion
  2009-03-29 11:04 [Bug fortran/39577] New: False positive with -fcheck=recursion burnus at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2009-04-04 21:38 ` burnus at gcc dot gnu dot org
@ 2009-04-04 21:46 ` burnus at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-04-04 21:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from burnus at gcc dot gnu dot org  2009-04-04 21:45 -------
FIXED on the trunk (4.5)


-- 

burnus at gcc dot gnu dot org changed:

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


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


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

end of thread, other threads:[~2009-04-04 21:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-29 11:04 [Bug fortran/39577] New: False positive with -fcheck=recursion burnus at gcc dot gnu dot org
2009-03-29 11:21 ` [Bug fortran/39577] " dominiq at lps dot ens dot fr
2009-03-29 19:20 ` burnus at gcc dot gnu dot org
2009-03-30 20:35 ` burnus at gcc dot gnu dot org
2009-04-04 21:38 ` burnus at gcc dot gnu dot org
2009-04-04 21:46 ` burnus at gcc dot gnu dot 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).