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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Sandra Loosemore <san...@gcc.gnu.org>:

https://gcc.gnu.org/g:6447f6f983ffeaecb8753ef685d702bf2594968b

commit r12-6191-g6447f6f983ffeaecb8753ef685d702bf2594968b
Author: Sandra Loosemore <san...@codesourcery.com>
Date:   Mon Jan 3 08:47:38 2022 -0800

    Fortran: Fix array copy-in/copy-out for BIND(C) functions [PR103390]

    The Fortran front end was generating invalid code for the array
    copy-out after a call to a BIND(C) function for a dummy with the
    CONTIGUOUS attribute when the actual argument was a call to the SHAPE
    intrinsic or other array expressions that are not lvalues.  It was
    also generating code to evaluate the argument expression multiple
    times on copy-in.  This patch teaches it to recognize that a copy is
    not needed in these cases.

    2022-01-03  Sandra Loosemore  <san...@codesourcery.com>

            PR fortran/103390

            gcc/fortran/
            * expr.c (gfc_is_simply_contiguous): Make it smarter about
            function calls.
            * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Do not generate
            copy loops for array expressions that are not "variables"
(lvalues).

            gcc/testsuite/
            * gfortran.dg/c-interop/pr103390-1.f90: New.
            * gfortran.dg/c-interop/pr103390-2.f90: New.
            * gfortran.dg/c-interop/pr103390-3.f90: New.
            * gfortran.dg/c-interop/pr103390-4.f90: New.
            * gfortran.dg/c-interop/pr103390-6.f90: New.
            * gfortran.dg/c-interop/pr103390-7.f90: New.
            * gfortran.dg/c-interop/pr103390-8.f90: New.
            * gfortran.dg/c-interop/pr103390-9.f90: New.

Reply via email to