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

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #59119|0                           |1
        is obsolete|                            |
  Attachment #59125|0                           |1
        is obsolete|                            |
  Attachment #59126|0                           |1
        is obsolete|                            |
                 CC|                            |pault at gcc dot gnu.org

--- Comment #3 from Paul Thomas <pault at gcc dot gnu.org> ---
Created attachment 59156
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59156&action=edit
A rather more complete patch to implement the assumed rank features

Fortran: Generic processing of assumed rank objects (f202y) [PR116733]

2024-09-20  Paul Thomas  <pa...@gcc.gnu.org>

gcc/fortran
        PR fortran/116733
        * array.cc : White space corrections.
        * expr.cc (gfc_check_pointer_assign): Permit assumed rank
        target with -std=f202y. Add constraints that the data pointer
        object must have rank remapping specified and the that the data
        target be contiguous.
        * gfortran.h : Add a gfc_array_ref field 'ar' to the structure
        'gfc_association_list'.
        * interface.cc (gfc_compare_actual_formal): If -Wsurprising
        is set, emit a warning if an assumed size array is passed to an
        assumed rank dummy.
        * intrinsic.cc (do_ts29113_check): Permit an assumed rank arg.
        for reshape if -std=f202y and the argument is contiguous.
        * invoke.texi : Introduce -std=f202y. Whitespace errors.
        * lang.opt : Accept -std=f202y.
        * libgfortran.h : Define GFC_STD_F202Y.
        * match.cc (gfc_match_associate): If -std=f202y an assumed rank
        selector is allowed if it is contiguous and the associate name
        has rank remapping specified.
        * options.cc (gfc_init_options): -std=f202y is equivalent to
        -std=f2023 with experimental f202y features. White space issues
        * parse.cc (parse_associate): If the selector is assumed rank,
        use the 'ar' field of the association list to build an array
        specification.
        * resolve.cc (gfc_expression_rank): Do not check dimen types
        for an assumed rank variable expression.
        (resolve_variable): Do not emit the assumed rank context error
        if the context is pointer assignment and the variable is a
        target.
        * trans-array.cc (gfc_conv_ss_startstride): If -std=f202y and
        bounds checking activated, do not apply the assertion.
        * trans-expr.cc (gfc_trans_pointer_assignment): An assumed rank
        target has its offset set to zero. Resolve the rank remap
        bounds if they are not constants or variables.
        * trans-stmt.cc (trans_associate_var): If the selector is
        assumed rank, call gfc_trans_pointer_assignment using the 'ar'
        field in the association list as the array reference for expr1.
        The data target, expr2, is a copy of the selector expression.

gcc/testsuite/
        PR fortran/116733
        * gfortran.dg/associate_3.f03: Change error message.
        * gfortran.dg/f202y/f202y.exp: Enable tests of f202y features.
        * gfortran.dg/f202y/generic_assumed_rank_1.f90: New test.
        * gfortran.dg/f202y/generic_assumed_rank_2.f90: New test.

Reply via email to