Commit c16ac98e by Paul Thomas

re PR fortran/86372 (Segfault on ASSOCIATE statement with CHARACTER variable)

2018-10-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86372
	* trans-stmt.c (trans_associate_var): Character associate names
	with variable string length do not have to be deferred length
	for the string length to be set, if variable.

2018-10-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86372
	* gfortran.dg/associate_41.f90: New test.

From-SVN: r264915
parent a52cdecf
......@@ -1885,7 +1885,6 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block)
}
if (sym->ts.type == BT_CHARACTER
&& sym->ts.deferred
&& !sym->attr.select_type_temporary
&& VAR_P (sym->ts.u.cl->backend_decl)
&& se.string_length != sym->ts.u.cl->backend_decl)
......
! { dg-do run }
!
! Test the fix for PR86372 in which the associate name string length was
! not being set, thereby causing a segfault.
!
! Contributed by Janus Weil <janus@gcc.gnu.org>
!
program xxx
character(len=50) :: s
s = repeat ('*', len(s))
call sub(s)
if (s .ne. '**'//'123'//repeat ('*', len(s) - 5)) stop 1
contains
subroutine sub(str)
character(len=*), intent(inout) :: str
associate (substr => str(3:5))
substr = '123'
end associate
end subroutine
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