re PR fortran/88247 (ICE in get_array_ctor_var_strlen, at fortran/trans-array.c:2068)
authorPaul Thomas <pault@gcc.gnu.org>
Wed, 27 Mar 2019 12:51:43 +0000 (12:51 +0000)
committerPaul Thomas <pault@gcc.gnu.org>
Wed, 27 Mar 2019 12:51:43 +0000 (12:51 +0000)
commitd5f48c7c62d3d8cf8982cb29a8128e3b81335d24
tree76bbc93eb20c9c454b06f631c411d2415a8c5992
parent6461f211e09415edd95315f4f9ff843f4f1d8eff
re PR fortran/88247 (ICE in get_array_ctor_var_strlen, at fortran/trans-array.c:2068)

2019-03-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88247
* expr.c (is_subref_array): Permit substrings to be detected
as subref arrays.
* trans-array.c (get_array_ctor_var_strlen): Obtain the length
of deferred length strings. Handle substrings with a NULL end
expression.
(trans_array_constructor): Remove an unnecessary blank line.
(gfc_conv_scalarized_array_ref): Skip to label 'done' if 'decl'
is a pointer array.
(get_array_charlen): If the expression is an array, convert the
first element of the constructor and use its string length. Get
a new charlen if necessary.
(gfc_conv_expr_descriptor): Call 'get_array_charlen' for array
constructor expressions. If the ss_info string length is
available, use that to set the span of character arrays.
* trans-expr.c (gfc_get_expr_charlen): Handle substrings
* trans-stmt.c (trans_associate_var): Set the pointer array
flag for variable targets and constant array constructors. Take
care not to reset the string length or the span in the case of
expressions that are not converted as direct by reference.

2019-03-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88247
* gfortran.dg/associate_47.f90: New test.

From-SVN: r269962
gcc/fortran/ChangeLog
gcc/fortran/expr.c
gcc/fortran/trans-array.c
gcc/fortran/trans-expr.c
gcc/fortran/trans-stmt.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/associate_47.f90 [new file with mode: 0644]