This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/60593] ICE with deferred length variable in FORALL


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60593

--- Comment #7 from Paul Thomas <pault at gcc dot gnu.org> ---
Author: pault
Date: Fri Jan 15 20:33:58 2016
New Revision: 232450

URL: https://gcc.gnu.org/viewcvs?rev=232450&root=gcc&view=rev
Log:
2016-01-15  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/64324
        * resolve.c (check_uop_procedure): Prevent deferred length
        characters from being trapped by assumed length error.

        PR fortran/49630
        PR fortran/54070
        PR fortran/60593
        PR fortran/60795
        PR fortran/61147
        PR fortran/64324
        * trans-array.c (gfc_conv_scalarized_array_ref): Pass decl for
        function as well as variable expressions.
        (gfc_array_init_size): Add 'expr' as an argument. Use this to
        correctly set the descriptor dtype for deferred characters.
        (gfc_array_allocate): Add 'expr' to the call to
        'gfc_array_init_size'.
        * trans.c (gfc_build_array_ref): Expand logic for setting span
        to include indirect references to character lengths.
        * trans-decl.c (gfc_get_symbol_decl): Ensure that deferred
        result char lengths that are PARM_DECLs are indirectly
        referenced both for directly passed and by reference.
        (create_function_arglist): If the length type is a pointer type
        then store the length as the 'passed_length' and make the char
        length an indirect reference to it.
        (gfc_trans_deferred_vars): If a character length has escaped
        being set as an indirect reference, return it via the 'passed
        length'.
        * trans-expr.c (gfc_conv_procedure_call): The length of
        deferred character length results is set TREE_STATIC and set to
        zero.
        (gfc_trans_assignment_1): Do not fix the rse string_length if
        it is a variable, a parameter or an indirect reference. Add the
        code to trap assignment of scalars to unallocated arrays.
        * trans-stmt.c (gfc_trans_allocate): Remove 'def_str_len' and
        all references to it. Instead, replicate the code to obtain a
        explicitly defined string length and provide a value before
        array allocation so that the dtype is correctly set.
        trans-types.c (gfc_get_character_type): If the character length
        is a pointer, use the indirect reference.

2016-01-15  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/49630
        * gfortran.dg/deferred_character_13.f90: New test for the fix
        of comment 3 of the PR.

        PR fortran/54070
        * gfortran.dg/deferred_character_8.f90: New test
        * gfortran.dg/allocate_error_5.f90: New test

        PR fortran/60593
        * gfortran.dg/deferred_character_10.f90: New test

        PR fortran/60795
        * gfortran.dg/deferred_character_14.f90: New test

        PR fortran/61147
        * gfortran.dg/deferred_character_11.f90: New test

        PR fortran/64324
        * gfortran.dg/deferred_character_9.f90: New test

Added:
    trunk/gcc/testsuite/gfortran.dg/allocate_error_5.f90
    trunk/gcc/testsuite/gfortran.dg/deferred_character_10.f90
    trunk/gcc/testsuite/gfortran.dg/deferred_character_11.f90
    trunk/gcc/testsuite/gfortran.dg/deferred_character_12.f90
    trunk/gcc/testsuite/gfortran.dg/deferred_character_13.f90
    trunk/gcc/testsuite/gfortran.dg/deferred_character_14.f90
    trunk/gcc/testsuite/gfortran.dg/deferred_character_8.f90
    trunk/gcc/testsuite/gfortran.dg/deferred_character_9.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/resolve.c
    trunk/gcc/fortran/trans-array.c
    trunk/gcc/fortran/trans-decl.c
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/fortran/trans-stmt.c
    trunk/gcc/fortran/trans-types.c
    trunk/gcc/fortran/trans.c
    trunk/gcc/testsuite/ChangeLog

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]