[gcc(refs/users/mikael/heads/refactor_descriptor_v05)] Correction assumed_type_2

Mikael Morin mikael@gcc.gnu.org
Fri Jun 13 15:06:57 GMT 2025


https://gcc.gnu.org/g:d45980ddb11f8034826428bbfc004bdb648b2bae

commit d45980ddb11f8034826428bbfc004bdb648b2bae
Author: Mikael Morin <mikael@gcc.gnu.org>
Date:   Mon May 19 16:41:03 2025 +0200

    Correction assumed_type_2

Diff:
---
 gcc/fortran/trans.cc                         | 11 +++++++++++
 gcc/testsuite/gfortran.dg/assumed_type_2.f90 | 10 +++++-----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/gcc/fortran/trans.cc b/gcc/fortran/trans.cc
index 180d57026317..ed033a44a344 100644
--- a/gcc/fortran/trans.cc
+++ b/gcc/fortran/trans.cc
@@ -423,6 +423,17 @@ gfc_build_array_ref (tree type, tree base, tree index, bool non_negative_offset,
 
   if (non_negative_offset)
     {
+      tree base_type = TREE_TYPE (base);
+      if (TREE_CODE (base_type) == ARRAY_TYPE
+	  && tree_int_cst_equal (min_idx,
+				 TYPE_MIN_VALUE (TYPE_DOMAIN (base_type)))
+	  && tree_int_cst_equal (spacing_bytes,
+				 TYPE_SIZE_UNIT (TREE_TYPE (base_type))))
+	{
+	  min_idx = NULL_TREE;
+	  spacing_bytes = NULL_TREE;
+	}
+
       tree spacing;
       if (spacing_bytes == NULL_TREE)
 	spacing = NULL_TREE;
diff --git a/gcc/testsuite/gfortran.dg/assumed_type_2.f90 b/gcc/testsuite/gfortran.dg/assumed_type_2.f90
index 5d3cd7eaece9..e33cbae341fe 100644
--- a/gcc/testsuite/gfortran.dg/assumed_type_2.f90
+++ b/gcc/testsuite/gfortran.dg/assumed_type_2.f90
@@ -147,22 +147,22 @@ end
 
 ! { dg-final { scan-tree-dump-times "sub_scalar .&scalar_int," 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_scalar .&scalar_t1," 1 "original" } }
-! { dg-final { scan-tree-dump-times "sub_scalar .&array_int.1.," 1 "original" } }
+! { dg-final { scan-tree-dump-times {sub_scalar .&array_int.1.(?:{lb: 0 sz: 4})?,} 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_scalar .&scalar_t1," 1 "original" } }
 
 ! { dg-final { scan-tree-dump-times "sub_scalar .&\\(.\\(real.kind=4..0:. . restrict\\) array_real_alloc.data" 1 "original" } }
-! { dg-final { scan-tree-dump-times "sub_scalar .\\(character.kind=1..1:1. .\\) .array_char_ptr.data" 1 "original" } }
+! { dg-final { scan-tree-dump-times {sub_scalar .\(character.kind=1..1:1. .\) array_char_ptr.data \+} 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_scalar .&\\(.\\(struct t2.0:. . restrict\\) array_t2_alloc.data" 1 "original" } }
-! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t3 .\\) .array_t3_ptr.data" 1 "original" } }
+! { dg-final { scan-tree-dump-times {sub_scalar .\(struct t3 .\) array_t3_ptr.data \+} 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } }
-! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } }
+! { dg-final { scan-tree-dump-times {sub_scalar .\(struct t1 .\) array_class_t1_ptr._data.data \+} 1 "original" } }
 
 ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 4 "original" } }
 ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } }
 ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&array_char_ptr\\);" 1 "original" } }
-! { dg-final { scan-tree-dump-times "\\.data = \\(void .\\) &array_t1.0.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times {\.data = \(void .\) &array_t1.0.(?:{lb: 0 sz: 4})?;} 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } }


More information about the Gcc-cvs mailing list