[4.5, Patch, Fortran] PR 36704: Procedure pointer as function result
Tobias Burnus
burnus@net-b.de
Wed Apr 8 17:55:00 GMT 2009
Janus Weil wrote:
> If not: Ok for trunk?
> (Regtested on x86_64-unknown-linux-gnu)
>
Please don't forget to CC gcc-patches@.
I think the patch can go in, if one fixes the following issue afterwards.
! compile with -std=f95
function f()
intrinsic sin
external f
pointer f
real f
! ICE without the following line
! strange error with that line
! f => sin
end function f
Some tiny nit found while reading the patch:
function aux()
external aux
pointer aux
end function
Can you add a "aux=>something" line there? I know the warning is not
triggered as the error message for "foo" comes earlier but ...
module mo
contains
function j()
procedure(),pointer :: j
j => iabs
Pedantically, I would add an "intrinsic iabs".
Tobias
> 2009-04-08 Janus Weil <janus@gcc.gnu.org>
>
> PR fortran/36704
> * decl.c (add_hidden_procptr_result): New function for handling
> procedure pointer return values by adding a hidden result variable.
> (variable_decl,match_procedure_decl,gfc_match_function_decl,
> gfc_match_subroutine,gfc_match_end,attr_decl1): Handle procedure pointer
> return values.
> * parse.c (parse_interface): Add EXTERNAL attribute only after
> FUNCTION/SUBROUTINE declaration is complete.
> * primary.c (replace_hidden_procptr_result): New function for replacing
> function symbol by hidden result variable.
> (gfc_match_rvalue,match_variable): Replace symbol by hidden result
> variable.
> * resolve.c (resolve_contained_fntype,resolve_function,resolve_variable,
> resolve_symbol): Allow for procedure pointer function results.
> (resolve_fl_procedure): Conflict detection moved here from
> 'check_conflict'.
> * symbol.c (gfc_check_function_type): Allow for procedure pointer
> function results.
> (check_conflict): Move some conflict detection to resolution stage.
> * trans-types.c (gfc_sym_type,gfc_get_function_type): Handle hidden
> result variables.
>
>
> 2009-04-08 Janus Weil <janus@gcc.gnu.org>
>
> PR fortran/36704
> * gfortran.dg/external_procedures_1.f90: Modified.
> * gfortran.dg/proc_ptr_result_1.f90: New.
> * gfortran.dg/proc_ptr_result_2.f90: New.
> * gfortran.dg/proc_ptr_result_3.f90: New.
>
More information about the Fortran
mailing list