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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Mark Eggleston
<markeggles...@gcc.gnu.org>:

https://gcc.gnu.org/g:b0d84ecc55f3ea86764b119040c5ffde36cd0524

commit r10-7334-gb0d84ecc55f3ea86764b119040c5ffde36cd0524
Author: Mark Eggleston <markeggles...@gcc.gnu.org>
Date:   Mon Mar 23 14:42:20 2020 +0000

    fortran: ICE in gfc_match_assignment PR93600

    This patch builds on the original patch by Steve Kargl that fixed the
    ICE and produced an "Unclassifiable statement at (1)" error. The
    processing of parameter variables now correctly handles zero length
    arrays used with %kind and %len. A side affect is that "Unclassifiable"
    error now says "Assignment to constant expression at (1)". It also
    fixes PR93365.

    gcc/fortran/ChangeLog:

            PR fortran/93600
            * expr.c (simplify_parameter_variable): Check whether the ref
            chain contains INQUIRY_LEN or INQUIRY_KIND and set inquiry
            boolean. When an empty array has been identified and a new
            new EXPR_ARRAY expression has been created only return that
            expression if inquiry is not set. This allows the new
            expression to drop through to be simplified into a
            EXPR_CONSTANT representing %kind or %len.
            * match.c (gfc_match_assignment): If lvalue doesn't have a
            symtree free both lvalue and rvalue expressions and return
            an error.
            * resolv.c (gfc_resolve_ref): Ensure that code to handle
            INQUIRY_LEN is only performed for arrays with deferred types.

    gcc/testsuite/ChangeLog:

            PR fortran/93365
            PR fortran/93600
            * gfortran.dg/pr93365.f90: New test.
            * gfortran.dg/pr93600_1.f90: New test.
            * gfortran.dg/pr93600_2.f90: New test.

Reply via email to