]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/fortran/gfortran.h
gfortran: Allow ref'ing PDT's len() in parameter-initializer.
authorAndre Vehreschild <vehre@gcc.gnu.org>
Wed, 12 Jul 2023 10:51:30 +0000 (12:51 +0200)
committerAndre Vehreschild <vehre@gcc.gnu.org>
Wed, 12 Jul 2023 11:27:43 +0000 (13:27 +0200)
commitf9182da3213aa57c16dd0b52862126de4a259f6a
tree5e2f22ae80cb2197ffbd46171ec21c8dae8b5592
parent25f831eab368d1bbec4dc67bf058cb7cf6b721ee
gfortran: Allow ref'ing PDT's len() in parameter-initializer.

Fix declaring a parameter initialized using a pdt_len reference
not simplifying the reference to a constant.

2023-07-12  Andre Vehreschild  <vehre@gcc.gnu.org>

gcc/fortran/ChangeLog:

PR fortran/102003
* expr.cc (find_inquiry_ref): Replace len of pdt_string by
constant.
(simplify_ref_chain): Ensure input to find_inquiry_ref is
NULL.
(gfc_match_init_expr): Prevent PDT analysis for function calls.
(gfc_pdt_find_component_copy_initializer): Get the initializer
value for given component.
* gfortran.h (gfc_pdt_find_component_copy_initializer): New
function.
* simplify.cc (gfc_simplify_len): Replace len() of PDT with pdt
component ref or constant.

gcc/testsuite/ChangeLog:

* gfortran.dg/pdt_33.f03: New test.
gcc/fortran/expr.cc
gcc/fortran/gfortran.h
gcc/fortran/simplify.cc
gcc/testsuite/gfortran.dg/pdt_33.f03 [new file with mode: 0644]