[Bug fortran/78990] [6/7/8 Regression] ICE when assigning polymorphic array function result

pault at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Nov 19 19:51:00 GMT 2017


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

--- Comment #4 from Paul Thomas <pault at gcc dot gnu.org> ---
Author: pault
Date: Sun Nov 19 19:50:50 2017
New Revision: 254936

URL: https://gcc.gnu.org/viewcvs?rev=254936&root=gcc&view=rev
Log:
2017-11-19  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/78990
        * expr.c (gfc_is_class_array_function): Renamed from
        'gfc_is_alloc_class_array_function' and modified to return true
        for pointers as well as allocatable results.
        * gfortran.h : Change of name for prototype of above function.
        * trans-array.c (gfc_add_loop_ss_code): Force finalization of
        class array results.
        (build_class_array_ref): Change assertion into a condition.
        (build_class_array_ref): Set the se class_vptr for class array
        function results.
        (gfc_walk_function_expr): Reference gfc_is_class_array_function
        as above.
        * trans-decl.c (get_proc_result): Move it up before
        gfc_trans_deferred_vars.
        (gfc_trans_deferred_vars): Nullify explicit return class arrays
        on entry.
        * trans-expr.c (gfc_conv_class_to_class): Allow conversion of
        class array functions that have an se class_vptr and use it
        for the result vptr.
        (gfc_conv_subref_array_arg): Rename reference to the above
        function.
        (gfc_conv_procedure_call): Ditto. Add the se pre block to the
        loop pre block before the function is evaluated. Do not
        finalize class pointer results.
        (arrayfunc_assign_needs_temporary, gfc_trans_assignment_1) More
        renamed references.
        * trans-intrinsic.c (gfc_conv_intrinsic_size): Ditto.

2017-11-19  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/78990
        * gfortran.dg/class_67.f90: New test.


Added:
    trunk/gcc/testsuite/gfortran.dg/class_67.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/expr.c
    trunk/gcc/fortran/gfortran.h
    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-intrinsic.c
    trunk/gcc/testsuite/ChangeLog


More information about the Gcc-bugs mailing list