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

--- Comment #2 from Paul Thomas <pault at gcc dot gnu.org> ---
Author: pault
Date: Sun Apr 14 18:14:58 2019
New Revision: 270353

URL: https://gcc.gnu.org/viewcvs?rev=270353&root=gcc&view=rev
Log:
2019-04-14  Paul Thomas  <pa...@gcc.gnu.org>

        PR fortran/89843
        * trans-decl.c (gfc_get_symbol_decl): Assumed shape and assumed
        rank dummies of bind C procs require deferred initialization.
        (convert_CFI_desc): New procedure to convert incoming CFI
        descriptors to gfc types and back again.
        (gfc_trans_deferred_vars): Call it.
        * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Null the CFI
        descriptor pointer. Free the descriptor in all cases.

        PR fortran/89846
        * expr.c (is_CFI_desc): New function.
        (is_subref_array): Tidy up by referencing the symbol directly.
        * gfortran.h : Prototype for is_CFI_desc.
        * trans_array.c (get_CFI_desc): New function.
        (gfc_get_array_span, gfc_conv_scalarized_array_ref,
        gfc_conv_array_ref): Use it.
        * trans.c (get_array_span): Extract the span from descriptors
        that are indirect references.

        PR fortran/90022
        * trans-decl.c (gfc_get_symbol_decl): Make sure that the se
        expression is a pointer type before converting it to the symbol
        backend_decl type.
        * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Eliminate
        temporary creation for intent(in).

2019-04-14  Paul Thomas  <pa...@gcc.gnu.org>

        PR fortran/89843
        * gfortran.dg/ISO_Fortran_binding_4.f90: Modify the value of x
        in ctg. Test the conversion of the descriptor types in the main
        program.
        * gfortran.dg/ISO_Fortran_binding_10.f90: New test.
        * gfortran.dg/ISO_Fortran_binding_10.c: Called by it.

        PR fortran/89846
        * gfortran.dg/ISO_Fortran_binding_11.f90: New test.
        * gfortran.dg/ISO_Fortran_binding_11.c: Called by it.

        PR fortran/90022
        * gfortran.dg/ISO_Fortran_binding_1.c: Correct the indexing for
        the computation of 'ans'. Also, change the expected results for
        CFI_is_contiguous to comply with standard.
        * gfortran.dg/ISO_Fortran_binding_1.f90: Correct the expected
        results for CFI_is_contiguous to comply with standard.
        * gfortran.dg/ISO_Fortran_binding_9.f90: New test.
        * gfortran.dg/ISO_Fortran_binding_9.c: Called by it.

2019-04-14  Paul Thomas  <pa...@gcc.gnu.org>

        PR fortran/89843
        * runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc): Only
        return immediately if the source pointer is null. Bring
        forward the extraction of the gfc type. Extract the kind so
        that the element size can be correctly computed for sections
        and components of derived type arrays. Remove the free of the
        CFI descriptor since this is now done in trans-expr.c.
        (gfc_desc_to_cfi_desc): Only allocate the CFI descriptor if it
        is not null.
        (CFI_section): Normalise the difference between the upper and
        lower bounds by the stride to correctly calculate the extents
        of the section.

        PR fortran/89846
        * runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc): Use
        the stride measure for the gfc span if it is not a multiple
        of the element length. Otherwise use the element length.

        PR fortran/90022
        * runtime/ISO_Fortran_binding.c (CFI_is_contiguous) : Return
        1 for true and 0 otherwise to comply with the standard. Correct
        the contiguity check for rank 3 and greater by using the stride
        measure of the lower dimension rather than the element length.


Added:
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_10.c
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_10.f90
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_11.c
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_11.f90
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_9.c
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_9.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/expr.c
    trunk/gcc/fortran/gfortran.h
    trunk/gcc/fortran/trans-array.c
    trunk/gcc/fortran/trans-decl.c
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/fortran/trans.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.f90
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_3.f90
    trunk/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_4.f90
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/runtime/ISO_Fortran_binding.c

Reply via email to