]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Avoid redundant operations in `fortran_array_walker'
authorMaciej W. Rozycki <macro@embecosm.com>
Fri, 17 Dec 2021 15:01:32 +0000 (15:01 +0000)
committerMaciej W. Rozycki <macro@embecosm.com>
Fri, 17 Dec 2021 15:01:32 +0000 (15:01 +0000)
Move inner dimension's element type determination outside the respective
loops in `fortran_array_walker'.  The operation is exactly the same with
each iteration, so there is no point in redoing it for each element and
while a smart compiler might be able to move it outside the loop it is
regardless a bad coding style.  No functional change.

gdb/f-array-walker.h

index 5f889e6924ad1c083892fead7c8511f8f0e6d33f..646f4cbe7be8f2af78444d47f2a47a1422f76ceb 100644 (file)
@@ -208,6 +208,8 @@ private:
 
     if (nss != m_ndimensions)
       {
+       struct type *subarray_type = TYPE_TARGET_TYPE (check_typedef (type));
+
        /* For dimensions other than the inner most, walk each element and
           recurse while peeling off one more dimension of the array.  */
        for (LONGEST i = lowerbound;
@@ -218,13 +220,13 @@ private:
            LONGEST new_offset = offset + calc.index_offset (i);
 
            /* Now print the lower dimension.  */
-           struct type *subarray_type
-             = TYPE_TARGET_TYPE (check_typedef (type));
            walk_1 (nss + 1, subarray_type, new_offset, (i == upperbound));
          }
       }
     else
       {
+       struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (type));
+
        /* For the inner most dimension of the array, process each element
           within this dimension.  */
        for (LONGEST i = lowerbound;
@@ -233,7 +235,6 @@ private:
          {
            LONGEST elt_off = offset + calc.index_offset (i);
 
-           struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (type));
            if (is_dynamic_type (elt_type))
              {
                CORE_ADDR e_address = m_address + elt_off;