]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR fortran/39630 ([F03] Procedure Pointer Components)
authorJanus Weil <janus@gcc.gnu.org>
Sat, 25 Jul 2009 11:56:35 +0000 (13:56 +0200)
committerJanus Weil <janus@gcc.gnu.org>
Sat, 25 Jul 2009 11:56:35 +0000 (13:56 +0200)
commit90661f261cdf7b2349d403c4669e0107faad310e
tree5f96889c85c7f39e41827b1e710416e711dd6077
parent330b922f19394dccb7f3d00ed9dd0d4223787a28
re PR fortran/39630 ([F03] Procedure Pointer Components)

2009-07-25  Janus Weil  <janus@gcc.gnu.org>

PR fortran/39630
* decl.c (match_ppc_decl): Implement the PASS attribute for procedure
pointer components.
(match_binding_attributes): Ditto.
* gfortran.h (gfc_component): Add member 'tb'.
(gfc_typebound_proc): Add member 'ppc' and make 'pass_arg' const.
* module.c (MOD_VERSION): Bump module version.
(binding_ppc): New string constants.
(mio_component): Only use formal args if component is a procedure
pointer and add 'tb' member.
(mio_typebound_proc): Include pass_arg and take care of procedure
pointer components.
* resolve.c (update_arglist_pass): Add argument 'name' and take care of
optional arguments.
(extract_ppc_passed_object): New function, analogous to
extract_compcall_passed_object, but for procedure pointer components.
(update_ppc_arglist): New function, analogous to
update_compcall_arglist, but for procedure pointer components.
(resolve_typebound_generic_call): Added argument to update_arglist_pass.
(resolve_ppc_call, resolve_expr_ppc): Take care of PASS attribute.
(resolve_fl_derived): Check the PASS argument for procedure pointer
components.
* symbol.c (verify_bind_c_derived_type): Reject procedure pointer
components in BIND(C) types.

2009-07-25  Janus Weil  <janus@gcc.gnu.org>

PR fortran/39630
* gfortran.dg/proc_ptr_comp_3.f90: Modified.
* gfortran.dg/proc_ptr_comp_pass_1.f90: New.
* gfortran.dg/proc_ptr_comp_pass_2.f90: New.
* gfortran.dg/proc_ptr_comp_pass_3.f90: New.
* gfortran.dg/proc_ptr_comp_pass_4.f90: New.
* gfortran.dg/proc_ptr_comp_pass_5.f90: New.
* gfortran.dg/typebound_call_10.f03: New.

From-SVN: r150078
14 files changed:
gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/fortran/gfortran.h
gcc/fortran/module.c
gcc/fortran/resolve.c
gcc/fortran/symbol.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90
gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_5.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/typebound_call_10.f03 [new file with mode: 0644]