[Bug fortran/94070] Assumed-rank arrays – bounds mishandled, SIZE/SHAPE/UBOUND/LBOUND

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Oct 21 02:28:48 GMT 2021


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

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

https://gcc.gnu.org/g:1af78e731feb9327a17c99ebaa19a4cca1125caf

commit r12-4591-g1af78e731feb9327a17c99ebaa19a4cca1125caf
Author: Sandra Loosemore <sandra@codesourcery.com>
Date:   Tue Oct 19 21:11:15 2021 -0700

    Fortran: Fixes and additional tests for shape/ubound/size [PR94070]

    This patch reimplements the SHAPE intrinsic to be inlined similarly to
    LBOUND and UBOUND, instead of as a library call, to avoid an
    unnecessary array copy.  Various bugs are also fixed.

    gcc/fortran/
            PR fortran/94070

            * expr.c (gfc_simplify_expr): Handle GFC_ISYM_SHAPE along with
            GFC_ISYM_LBOUND and GFC_ISYM_UBOUND.
            * trans-array.c (gfc_conv_ss_startstride): Likewise.
            (set_loop_bounds): Likewise.
            * trans-intrinsic.c (gfc_trans_intrinsic_bound): Extend to
            handle SHAPE.  Correct logic for zero-size special cases and
            detecting assumed-rank arrays associated with an assumed-size
            argument.
            (gfc_conv_intrinsic_shape): Deleted.
            (gfc_conv_intrinsic_function): Handle GFC_ISYM_SHAPE like
            GFC_ISYM_LBOUND and GFC_ISYM_UBOUND.
            (gfc_add_intrinsic_ss_code): Likewise.
            (gfc_walk_intrinsic_bound): Likewise.

    gcc/testsuite/
            PR fortran/94070

            * gfortran.dg/c-interop/shape-bindc.f90: New test.
            * gfortran.dg/c-interop/shape-poly.f90: New test.
            * gfortran.dg/c-interop/size-bindc.f90: New test.
            * gfortran.dg/c-interop/size-poly.f90: New test.
            * gfortran.dg/c-interop/ubound-bindc.f90: New test.
            * gfortran.dg/c-interop/ubound-poly.f90: New test.


More information about the Gcc-bugs mailing list