[Bug fortran/69080] No automatic deallocation of allocatable function results

kargl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Dec 29 22:23:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69080

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |RESOLVED
                 CC|                            |kargl at gcc dot gnu.org
         Resolution|---                         |INVALID

--- Comment #5 from kargl at gcc dot gnu.org ---
(In reply to sv.mueller from comment #3)
> Thanks for testing this out!
> 
> Indeed there aren't any leaks with your changes. Actually, leaving the
> module save statement uncommented produces the same positive result for me.
> 
> However, I don't think this is a solution. If you, for example, think of a
> string class as the derived type instead of "dummy", there could be a
> function returning an allocatable string_class derived type. This string
> function result could be used somewhere in a subroutine as input, but the
> subroutine doesn't know if the string will still be used outside of the
> subroutine. So there is no way the subroutine should deallocate the string.
> 
> I know that allocatables that are declared in the program itself aren't
> deallocated automatically because of the implicit save attribute. But my
> thinking was that Fortran will take care of deallocating allocatables in all
> other cases. Of course, I may be mistaken.

When the execution of a procedure is terminated by execution of a
RETURN or END statement, an allocatable variable that is a named
local variable of the procedure retains its allocation and definition
status if it has the SAVE attribute or is a function result variable
or a subobject thereof; otherwise, it is deallocated.


More information about the Gcc-bugs mailing list