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

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu.org

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Untested patch:

diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 23317a2e2d9..6a180ff40f2 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -4170,3 +4170,13 @@ simplify_bound_dim (gfc_expr *array, gfc_expr *kind, int
d, int upper,
        {
-         if (!gfc_ref_dimen_size (&ref->u.ar, d - 1, &result->value.integer,
NULL))
+         int d2 = 0, cnt = 0;
+         for (int idx = 0; idx < ref->u.ar.dimen; ++idx)
+           {
+             if (ref->u.ar.dimen_type == DIMEN_ELEMENT)
+               d2++;
+             else if (cnt < d - 1)
+               cnt++;
+             else
+               break;
+           }
+         if (!gfc_ref_dimen_size (&ref->u.ar, d2 + d - 1,
&result->value.integer, NULL))
            goto returnNull;

Reply via email to