]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fortran: Move definition of variable closer to its uses
authorMikael Morin <mikael@gcc.gnu.org>
Mon, 8 Jul 2024 07:38:42 +0000 (09:38 +0200)
committerMikael Morin <mikael@gcc.gnu.org>
Mon, 8 Jul 2024 07:38:42 +0000 (09:38 +0200)
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

index 510f429ef8eda1e24dc1e7cc5cd835a8f6865350..c7d244689393d459800fe3fff1ca458fce3a1016 100644 (file)
@@ -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,12 @@ 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)
        {
+         gcc_assert (0 == ploop->order[0]);
+
          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 +4356,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 +4366,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)