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/37577] [meta-bug] change internal array descriptor format for better syntax, C interop TR, rank 15


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

--- Comment #7 from Paul Thomas <pault at gcc dot gnu.org> ---
Author: pault
Date: Thu Jan 25 19:09:40 2018
New Revision: 257065

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

        PR fortran/37577
        * array.c (gfc_match_array_ref): If standard earlier than F2008
        it is an error if the reference dimension is greater than 7.
        libgfortran.h : Increase GFC_MAX_DIMENSIONS to 15. Change the
        dtype masks and shifts accordingly.
        * trans-array.c (gfc_conv_descriptor_dtype): Use the dtype
        type node to check the field.
        (gfc_conv_descriptor_dtype): Access the rank field of dtype.
        (duplicate_allocatable_coarray): Access the rank field of the
        dtype descriptor rather than the dtype itself.
        * trans-expr.c (get_scalar_to_descriptor_type): Store the type
        of 'scalar' on entry and use its TREE_TYPE if it is ARRAY_TYPE
        (ie. a character).
        (gfc_conv_procedure_call): Pass TREE_OPERAND (tmp,0) to
        get_scalar_to_descriptor_type if the actual expression is a
        constant.
        (gfc_trans_structure_assign): Assign the rank directly to the
        dtype rank field.
        * trans-intrinsic.c (gfc_conv_intrinsic_rank): Cast the result
        to default integer kind.
        (gfc_conv_intrinsic_sizeof): Obtain the element size from the
        'elem_len' field of the dtype.
        * trans-io.c (gfc_build_io_library_fndecls): Replace
        gfc_int4_type_node with dtype_type_node where necessary.
        (transfer_namelist_element): Use gfc_get_dtype_rank_type for
        scalars.
        * trans-types.c : Provide 'get_dtype_type_node' to acces the
        dtype_type_node and, if necessary, build it.
        The maximum size of an array element is now determined by the
        maximum value of size_t.
        Update the description of the array descriptor, including the
        type def for the dtype_type.
        (gfc_get_dtype_rank_type): Build a constructor for the dtype.
        Distinguish RECORD_TYPEs that are BT_DERIVED or BT_CLASS.
        (gfc_get_array_descriptor_base): Change the type of the dtype
        field to dtype_type_node.
        (gfc_get_array_descr_info): Get the offset to the rank field of
        the dtype.
        * trans-types.h : Add a prototype for 'get_dtype_type_node ()'.
        * trans.h : Define the indices of the dtype fields.

2018-25-01  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/37577
        * gfortran.dg/coarray_18.f90: Allow dimension 15 for F2008.
        * gfortran.dg/coarray_lib_this_image_2.f90: Change 'array1' to
        'array01' in the tree dump comparison.
        * gfortran.dg/coarray_lib_token_4.f90: Likewise.
        * gfortran.dg/inline_sum_1.f90: Similar - allow two digits.
        * gfortran.dg/rank_1.f90: Allow dimension 15 for F2008.

2018-25-01  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/37577
        * caf/single.c (_gfortran_caf_failed_images): Access the 'type'
        and 'elem_len' fields of the dtype instead of the shifts.
        (_gfortran_caf_stopped_images): Likewise.
        * intrinsics/associated.c (associated): Compare the 'type' and
        'elem_len' fields instead of the dtype.
        * caf/date_and_time.c : Access the dtype fields rather using
        shifts and masks.
        * io/transfer.c (transfer_array ): Comment on item count.
        (set_nml_var,st_set_nml_var): Change dtype type and use fields.
        (st_set_nml_dtio_var): Likewise.
        * libgfortran.h : Change definition of GFC_ARRAY_DESCRIPTOR and
        add a typedef for the dtype_type. Change the GFC_DTYPE_* macros
        to access the dtype fields.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/array.c
    trunk/gcc/fortran/libgfortran.h
    trunk/gcc/fortran/trans-array.c
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/fortran/trans-intrinsic.c
    trunk/gcc/fortran/trans-io.c
    trunk/gcc/fortran/trans-types.c
    trunk/gcc/fortran/trans-types.h
    trunk/gcc/fortran/trans.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/coarray_18.f90
    trunk/gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
    trunk/gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
    trunk/gcc/testsuite/gfortran.dg/inline_sum_1.f90
    trunk/gcc/testsuite/gfortran.dg/rank_1.f90
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/caf/single.c
    trunk/libgfortran/intrinsics/associated.c
    trunk/libgfortran/intrinsics/date_and_time.c
    trunk/libgfortran/io/transfer.c
    trunk/libgfortran/libgfortran.h

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