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

commit c633926356155181081154c094010d672e715a4e
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Mon Nov 20 16:15:45 2023 +0100

    fortran: Remove useless nested end of scalarization chain handling
    
    Remove the special handling of end of nested scalarization chains, which
    advanced the chain to an element of a parent chain when the current one
    was reaching its end.
    
    That handling was superfluous as nested chains correspond to nested
    scalarizations of subexpressions and the scalarizations don't extend beyond
    their associated subexpression and don't use any scalarisation element from
    the parent expression.
    
    No change in behaviour, as the GFC_SE struct is supposed to be at its final
    state anyway when the last element from the chain has been consumed.
    
    gcc/fortran/ChangeLog:
    
            * trans-expr.cc (gfc_advance_se_ss_chain): Don't use an element
            from the parent scalarization chain when the current chain reaches
            its end.

Diff:
---
 gcc/fortran/trans-expr.cc | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index 477c2720187..f0862db5f17 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -2052,7 +2052,6 @@ void
 gfc_advance_se_ss_chain (gfc_se * se)
 {
   gfc_se *p;
-  gfc_ss *ss;
 
   gcc_assert (se != NULL && se->ss != NULL && se->ss != gfc_ss_terminator);
 
@@ -2064,15 +2063,7 @@ gfc_advance_se_ss_chain (gfc_se * se)
       gcc_assert (p->parent == NULL || p->parent->ss == p->ss
                  || p->parent->ss->nested_ss == p->ss);
 
-      /* If we were in a nested loop, the next scalarized expression can be
-        on the parent ss' next pointer.  Thus we should not take the next
-        pointer blindly, but rather go up one nest level as long as next
-        is the end of chain.  */
-      ss = p->ss;
-      while (ss->next == gfc_ss_terminator && ss->parent != NULL)
-       ss = ss->parent;
-
-      p->ss = ss->next;
+      p->ss = p->ss->next;
 
       p = p->parent;
     }

Reply via email to