WARNING: This server is unstable and will be retired in the next days.
If you want to keep this forum available, please request immediately a migration
on the Nabble Support forum.
Forums that don't receive any migration request will be deleted forever.
OK for trunk - just a wee typo to correct:
s/+ parameter available to the caller; gfortran save it in the
.mod files. */
/+ parameter available to the caller; gfortran saves it in the
.mod files. *//
Thanks for the patch.
On 13 May 2012 15:50, Tobias Burnus <burnus@...> wrote:
> Tobias Burnus wrote:
>> Note that the patch assumes that the function's result variable's length
>> specification expression is completely known to the caller. I think that's
>> always the case in gfortran - or is it not?
> Thinking about it, I came to the conclusion has explicitly been designed
> such that it is known.
> Note: The attached patch is required in addition to make sure that the
> variable has the correct name mangling and to ensure that the string length
> is TREE_PUBLIC() = 1, when needed.
> The trans-expr.c part of the patch has been posted at
> http://gcc.gnu.org/ml/fortran/2012-05/msg00054.html >
> Compile ("-c") the following code - with the function commented or not and
> with PUBLIC and PRIVATE - and look resulting .o file via nm. It shouldn't
> show the "str" variable (and the length variable) if (and only) if it is
> private and not used in the function result expression. Result for the
> program as shown below:
> 0000000000000008 B .__m_MOD_str
> 0000000000000000 T __m_MOD_bar
> 0000000000000000 B __m_MOD_str
> module m
> ! character(len=:), PRIVATE, allocatable :: str
> character(len=:), PUBLIC, allocatable :: str
> ! Note due to technical reasons (TBP, generic, cf. resolve.c),
> ! a "PRIVATE :: bar" still counts a publicly using "str".
> function bar()
> character(len=len(str)) :: str
> end function bar
> end module m
The knack of flying is learning how to throw yourself at the ground and miss.
--Hitchhikers Guide to the Galaxy