]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fortran: Remove redundant initialisation of associate variable span
authorMikael Morin <morin-mikael@orange.fr>
Tue, 5 Aug 2025 12:57:59 +0000 (14:57 +0200)
committerMikael Morin <mikael@gcc.gnu.org>
Tue, 5 Aug 2025 20:35:07 +0000 (22:35 +0200)
In the initialization of associate variable array descriptors, remove
an overwrite of the span field.  The descriptor that is returned by
gfc_conv_expr_descriptor should already be usable without it.

The range of cases where the code was in effect is not completely
clear.  The span overwrite looks redundant, and the conditional guarding
it seems to make it dead.  However, the conditions governing
gfc_conv_expr_descriptor, gfc_get_array_span and trans_associate_var
make it difficult to track what is possible and what isn't.  Trying to
investigate the case where the target is an array subreference wrapped
in parenthesis, I encountered a wrong-code issue, PR121384.  Let's
remove all this and see what happens.

gcc/fortran/ChangeLog:

* trans-stmt.cc (trans_associate_var): Remove overwrite of the
span field of the associate variable's array descriptor.

gcc/fortran/trans-stmt.cc

index 198acee1ba3e0446f2926d86c1df1f579f0a0b39..5974e4011bdd4e9d685234179c33684bf7c17adc 100644 (file)
@@ -2182,16 +2182,6 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block)
                                              dim, gfc_index_one_node);
        }
 
-      /* If this is a subreference array pointer associate name use the
-        associate variable element size for the value of 'span'.  */
-      if (sym->attr.subref_array_pointer && !se.direct_byref)
-       {
-         gcc_assert (e->expr_type == EXPR_VARIABLE);
-         tmp = gfc_get_array_span (se.expr, e);
-
-         gfc_conv_descriptor_span_set (&se.pre, desc, tmp);
-       }
-
       if (e->expr_type == EXPR_FUNCTION
          && sym->ts.type == BT_DERIVED
          && sym->ts.u.derived