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

commit cfaad601bf8224d79c7493d966647602247462c3
Author: Mikael Morin <[email protected]>
Date:   Fri Jul 3 17:03:17 2026 +0200

    Sauvegarde modifs

Diff:
---
 gcc/fortran/trans-array.cc     |  2 +-
 gcc/fortran/trans-intrinsic.cc |  8 ++++----
 gcc/fortran/trans-openmp.cc    |  3 +--
 gcc/fortran/trans-stmt.cc      | 13 +++++++------
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 3447ced7f2d8..ccdf588b3723 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -9120,7 +9120,7 @@ gfc_conv_array_parameter (gfc_se *se, gfc_expr *expr, 
bool g77,
              gfc_add_modify (&block, gfc_conv_descriptor_dtype (arr),
                              gfc_conv_descriptor_dtype (se->expr));
              gfc_add_modify (&block, gfc_conv_descriptor_rank (arr),
-                             build_int_cst (signed_char_type_node, 1));
+                             build_int_cst (gfc_array_dim_rank_type, 1));
              gfc_conv_descriptor_span_set (&block, arr,
                                            gfc_conv_descriptor_span_get (arr));
              gfc_conv_descriptor_offset_set (&block, arr, gfc_index_zero_node);
diff --git a/gcc/fortran/trans-intrinsic.cc b/gcc/fortran/trans-intrinsic.cc
index 51c6d5d94c00..58a4e4596b3c 100644
--- a/gcc/fortran/trans-intrinsic.cc
+++ b/gcc/fortran/trans-intrinsic.cc
@@ -8500,9 +8500,9 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr)
          tree cond, loop_var, exit_label;
           stmtblock_t body;
 
-         tmp = fold_convert (gfc_array_index_type,
+         tmp = fold_convert (gfc_array_dim_rank_type,
                              gfc_conv_descriptor_rank (argse.expr));
-         loop_var = gfc_create_var (gfc_array_index_type, "i");
+         loop_var = gfc_create_var (gfc_array_dim_rank_type, "i");
          gfc_add_modify (&argse.pre, loop_var, gfc_index_zero_node);
           exit_label = gfc_build_label_decl (NULL_TREE);
 
@@ -8531,8 +8531,8 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr)
          gfc_add_modify (&body, source_bytes, tmp);
 
          tmp = fold_build2_loc (input_location, PLUS_EXPR,
-                                gfc_array_index_type, loop_var,
-                                gfc_index_one_node);
+                                gfc_array_dim_rank_type, loop_var,
+                                gfc_rank_cst[1]);
          gfc_add_modify_loc (input_location, &body, loop_var, tmp);
 
          tmp = gfc_finish_block (&body);
diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc
index 339f0c99cb70..0d726b488133 100644
--- a/gcc/fortran/trans-openmp.cc
+++ b/gcc/fortran/trans-openmp.cc
@@ -2129,8 +2129,7 @@ gfc_omp_get_array_size (location_t loc, tree desc, 
gimple_seq *seq)
   tree end;
   if (GFC_TYPE_ARRAY_AKIND (TREE_TYPE (desc)) == GFC_ARRAY_ASSUMED_SHAPE_CONT
       || GFC_TYPE_ARRAY_AKIND (TREE_TYPE (desc)) == GFC_ARRAY_ASSUMED_SHAPE)
-    end = fold_convert (gfc_array_dim_rank_type,
-                       gfc_conv_descriptor_rank (desc));
+    end = gfc_conv_descriptor_rank (desc);
   else
     end = build_int_cst (gfc_array_dim_rank_type,
                         GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc)));
diff --git a/gcc/fortran/trans-stmt.cc b/gcc/fortran/trans-stmt.cc
index 90ac572dd725..785f0b48191b 100644
--- a/gcc/fortran/trans-stmt.cc
+++ b/gcc/fortran/trans-stmt.cc
@@ -3974,7 +3974,8 @@ gfc_trans_select_rank_cases (gfc_code * code)
   /* Calculate the switch expression.  */
   gfc_init_se (&se, NULL);
   gfc_conv_expr_descriptor (&se, code->expr1);
-  rank = gfc_conv_descriptor_rank (se.expr);
+  rank = fold_convert_loc (input_location, signed_char_type_node,
+                          gfc_conv_descriptor_rank (se.expr));
   rank = gfc_evaluate_now (rank, &block);
   symbol_attribute attr = gfc_expr_attr (code->expr1);
   if (!attr.pointer && !attr.allocatable)
@@ -3983,16 +3984,16 @@ gfc_trans_select_rank_cases (gfc_code * code)
         rank = (rank == 0 || ubound[rank-1] != -1) ? rank : -1.  */
       cond = fold_build2_loc (input_location, EQ_EXPR, logical_type_node,
                              rank, build_int_cst (TREE_TYPE (rank), 0));
-      tmp = fold_build2_loc (input_location, MINUS_EXPR, gfc_array_index_type,
-                            fold_convert (gfc_array_index_type, rank),
-                            gfc_index_one_node);
+      tmp = fold_build2_loc (input_location, MINUS_EXPR, signed_char_type_node,
+                            rank, build_one_cst(signed_char_type_node));
       tmp = gfc_conv_descriptor_ubound_get (se.expr, tmp);
       tmp = fold_build2_loc (input_location, NE_EXPR, logical_type_node,
                             tmp, build_int_cst (TREE_TYPE (tmp), -1));
       cond = fold_build2_loc (input_location, TRUTH_ORIF_EXPR,
                              logical_type_node, cond, tmp);
-      tmp = fold_build3_loc (input_location, COND_EXPR, TREE_TYPE (rank),
-                            cond, rank, build_int_cst (TREE_TYPE (rank), -1));
+      tmp = fold_build3_loc (input_location, COND_EXPR, signed_char_type_node,
+                            cond, rank,
+                            build_minus_one_cst (signed_char_type_node));
       rank = gfc_evaluate_now (tmp, &block);
     }
   TREE_USED (code->exit_label) = 0;

Reply via email to