https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67779
--- Comment #26 from Paul Thomas <pault at gcc dot gnu.org> --- Author: pault Date: Sun Jan 10 18:06:43 2016 New Revision: 232203 URL: https://gcc.gnu.org/viewcvs?rev=232203&root=gcc&view=rev Log: 2016-01-10 Paul Thomas <pa...@gcc.gnu.org> Backport from mainline. PR fortran/50221 PR fortran/68216 PR fortran/63932 PR fortran/66408 * trans_array.c (gfc_conv_scalarized_array_ref): Pass the symbol decl for deferred character length array references. * trans-stmt.c (gfc_trans_allocate): Keep the string lengths to update deferred length character string lengths. * trans-types.c (gfc_get_dtype_rank_type); Use the string length of deferred character types for the dtype size. * trans.c (gfc_build_array_ref): For references to deferred character arrays, use the domain max value, if it is a variable to set the 'span' and use pointer arithmetic for acces to the element. (trans_code): Set gfc_current_locus for diagnostic purposes. Backport from mainline. PR fortran/67674 * trans-expr.c (gfc_conv_procedure_call): Do not fix deferred string lengths of components. Backport from mainline. PR fortran/49954 * resolve.c (deferred_op_assign): New function. (gfc_resolve_code): Call it. * trans-array.c (concat_str_length): New function. (gfc_alloc_allocatable_for_assignment): Jump directly to alloc/ realloc blocks for deferred character length arrays because the string length might change, even if the shape is the same. Call concat_str_length to obtain the string length for concatenation since it is needed to compute the lhs string length. Set the descriptor dtype appropriately for the new string length. * trans-expr.c (gfc_trans_assignment_1): Fix the rse string length for all characters, other than deferred types. For concatenation operators, push the rse.pre block to the inner most loop so that the temporary pointer and the assignments are properly placed. Backport from mainline. PR fortran/67779 * trans_array.c (gfc_conv_scalarized_array_ref): Add missing se->use_offset from condition for calculation of 'base'. 2015-01-10 Paul Thomas <pa...@gcc.gnu.org> Backport from mainline. PR fortran/50221 * gfortran.dg/deferred_character_1.f90: New test. * gfortran.dg/deferred_character_4.f90: New test for comment #4 of the PR. Backport from mainline. PR fortran/68216 * gfortran.dg/deferred_character_2.f90: New test. Backport from mainline. PR fortran/67674 * gfortran.dg/deferred_character_3.f90: New test. Backport from mainline. PR fortran/63932 * gfortran.dg/deferred_character_5.f90: New test. Backport from mainline. PR fortran/66408 * gfortran.dg/deferred_character_6.f90: New test. Backport from mainline. PR fortran/49954 * gfortran.dg/deferred_character_7.f90: New test. Backport from mainline. PR fortran/67779 * gfortran.dg/actual_array_offset_1: New test. Added: branches/gcc-5-branch/gcc/fortran/ChangeLog-2015 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/actual_array_offset_1.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/deferred_character_1.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/deferred_character_2.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/deferred_character_3.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/deferred_character_4.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/deferred_character_5.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/deferred_character_6.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/deferred_character_7.f90 Modified: branches/gcc-5-branch/gcc/fortran/ChangeLog branches/gcc-5-branch/gcc/fortran/resolve.c branches/gcc-5-branch/gcc/fortran/trans-array.c branches/gcc-5-branch/gcc/fortran/trans-expr.c branches/gcc-5-branch/gcc/fortran/trans-stmt.c branches/gcc-5-branch/gcc/fortran/trans-types.c branches/gcc-5-branch/gcc/fortran/trans.c branches/gcc-5-branch/gcc/testsuite/ChangeLog