aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Morin <mikael@gcc.gnu.org>2024-07-07 11:00:51 +0200
committerMikael Morin <mikael@gcc.gnu.org>2024-09-15 20:39:54 +0200
commitd204bee388d74a6895da15a1027a64a8c4ea4fbb (patch)
treed92f7a6f6f32ea111d9f235ea499b021e8071881
parenta9f9391e1eeccb9d062b9e73ef27ac577b23ed64 (diff)
downloadgcc-d204bee388d74a6895da15a1027a64a8c4ea4fbb.zip
gcc-d204bee388d74a6895da15a1027a64a8c4ea4fbb.tar.gz
gcc-d204bee388d74a6895da15a1027a64a8c4ea4fbb.tar.bz2
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 of behaviour, as the GFC_SE struct is supposed to be in 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.
-rw-r--r--gcc/fortran/trans-expr.cc11
1 files changed, 1 insertions, 10 deletions
diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index f1dfac4..07e28a9 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -2044,7 +2044,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);
@@ -2056,15 +2055,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;
}