Commit 88b8971f by Paul Thomas

re PR fortran/77358 ([F08] deferred-length character function returns zero-length string)

2016-08-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/77358
	* resolve.c (resolve_fl_procedure): Use the correct gfc_charlen
	for deferred character length module procedures.

2016-08-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/77358
	* gfortran.dg/submodule_17.f08: New test.

From-SVN: r239740
parent c8cd4696
2016-08-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77358
* resolve.c (resolve_fl_procedure): Use the correct gfc_charlen
for deferred character length module procedures.
2016-08-23 Fritz Reese <fritzoreese@gmail.com>
* decl.c (gfc_match_structure_decl): Make gfc_structure_id static.
......
......@@ -11884,6 +11884,13 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
iface = sym->ts.interface;
sym->ts.interface = NULL;
/* Make sure that the result uses the correct charlen for deferred
length results. */
if (iface && sym->result
&& iface->ts.type == BT_CHARACTER
&& iface->ts.deferred)
sym->result->ts.u.cl = iface->ts.u.cl;
if (iface == NULL)
goto check_formal;
......
2016-08-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77358
* gfortran.dg/submodule_17.f08: New test.
2016-08-24 Michael Collison <michael.collison@linaro.org>
Michael Collison <michael.collison@arm.com>
......
! { dg-do run }
!
! Tests the fix for PR77358, in which the wrong gfc_charlen was
! being used for the result of 'get'.
!
! Contributed by Damian Rouson <damian@sourceryinstitute.org>
!
module hello_interface
character(len=13) :: string="Hello, world!"
interface
module function get() result(result_string)
character(:), allocatable :: result_string
end function
end interface
end module
submodule(hello_interface) hello_implementation
contains
module function get() result(result_string)
character(:), allocatable :: result_string
result_string = string
end function
end submodule
use hello_interface
if (get() .ne. string) call abort
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment