https://gcc.gnu.org/g:137fe54b5c5d42ef4ce1c5186755eb690105fa0a

commit 137fe54b5c5d42ef4ce1c5186755eb690105fa0a
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Thu Apr 3 20:59:45 2025 +0200

    Correction actual_array_constructor_1.f90

Diff:
---
 gcc/fortran/trans-array.cc | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index f09a1f6130dd..717176c01056 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -3509,6 +3509,7 @@ conv_array_index_offset (gfc_se * se, gfc_ss * ss, int 
dim, int i,
 {
   gfc_array_info *info;
   tree index;
+  tree descriptor;
   tree data;
 
   info = &ss->info->data.array;
@@ -3544,14 +3545,15 @@ conv_array_index_offset (gfc_se * se, gfc_ss * ss, int 
dim, int i,
                                   gfc_array_index_type,
                                   se->loop->loopvar[i], se->loop->from[i]);
 
-         data = info->subscript[dim]->info->data.array.data;
+         descriptor = info->subscript[dim]->info->data.array.descriptor; 
          index = fold_convert_loc (input_location, gfc_array_index_type, 
index);
 
          /* Read the vector to get an index into info->descriptor.  */
-         data = build_fold_indirect_ref_loc (input_location, data);
+         data = build_fold_indirect_ref_loc (input_location, 
+                                             gfc_conv_array_data (descriptor));
          index = gfc_build_array_ref (data, index,
-                                      
info->subscript[dim]->info->data.array.spacing[0],
-                                      
info->subscript[dim]->info->data.array.align);
+                                      gfc_conv_array_spacing (descriptor, 0),
+                                      gfc_conv_array_align (descriptor));
          index = gfc_evaluate_now (index, &se->pre);
          index = fold_convert (gfc_array_index_type, index);

Reply via email to