Hello,

I have found this small cleanup lying in a local branch.
Regression-tested on x86_64-linux, OK for master?

-- 8< --

No change of behaviour, this makes a variable easier to track.

gcc/fortran/ChangeLog:

        * trans-array.cc (gfc_trans_preloop_setup): Use a separate variable
        for iteration.  Use directly the value of variable I if it is known.
        Move the definition of the variable to the branch where the
        remaining uses are.
---
 gcc/fortran/trans-array.cc | 31 +++++++++++++++++--------------
 1 file changed, 17 insertions(+), 14 deletions(-)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 510f429ef8e..c34c97257a9 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -4294,7 +4294,6 @@ gfc_trans_preloop_setup (gfc_loopinfo * loop, int dim, 
int flag,
   gfc_ss *ss, *pss;
   gfc_loopinfo *ploop;
   gfc_array_ref *ar;
-  int i;
 
   /* This code will be executed before entering the scalarization loop
      for this dimension.  */
@@ -4340,19 +4339,10 @@ gfc_trans_preloop_setup (gfc_loopinfo * loop, int dim, 
int flag,
          pss = ss;
        }
 
-      if (dim == loop->dimen - 1)
-       i = 0;
-      else
-       i = dim + 1;
-
-      /* For the time being, there is no loop reordering.  */
-      gcc_assert (i == ploop->order[i]);
-      i = ploop->order[i];
-
       if (dim == loop->dimen - 1 && loop->parent == NULL)
        {
          stride = gfc_conv_array_stride (info->descriptor,
-                                         innermost_ss (ss)->dim[i]);
+                                         innermost_ss (ss)->dim[0]);
 
          /* Calculate the stride of the innermost loop.  Hopefully this will
             allow the backend optimizers to do their stuff more effectively.
@@ -4364,7 +4354,7 @@ gfc_trans_preloop_setup (gfc_loopinfo * loop, int dim, 
int flag,
             base offset of the array.  */
          if (info->ref)
            {
-             for (i = 0; i < ar->dimen; i++)
+             for (int i = 0; i < ar->dimen; i++)
                {
                  if (ar->dimen_type[i] != DIMEN_ELEMENT)
                    continue;
@@ -4374,8 +4364,21 @@ gfc_trans_preloop_setup (gfc_loopinfo * loop, int dim, 
int flag,
            }
        }
       else
-       /* Add the offset for the previous loop dimension.  */
-       add_array_offset (pblock, ploop, ss, ar, pss->dim[i], i);
+       {
+         int i;
+
+         if (dim == loop->dimen - 1)
+           i = 0;
+         else
+           i = dim + 1;
+
+         /* For the time being, there is no loop reordering.  */
+         gcc_assert (i == ploop->order[i]);
+         i = ploop->order[i];
+
+         /* Add the offset for the previous loop dimension.  */
+         add_array_offset (pblock, ploop, ss, ar, pss->dim[i], i);
+       }
 
       /* Remember this offset for the second loop.  */
       if (dim == loop->temp_dim - 1 && loop->parent == NULL)
-- 
2.43.0

Reply via email to