https://gcc.gnu.org/g:37157d145c9c8864bbd80fc00541e07d1b9e77b6

commit 37157d145c9c8864bbd80fc00541e07d1b9e77b6
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Tue May 20 15:39:49 2025 +0200

    Correction régression maxval_char_4

Diff:
---
 libgfortran/generated/maxval1_s1.c | 5 +++--
 libgfortran/generated/maxval1_s4.c | 5 +++--
 libgfortran/generated/minval1_s1.c | 5 +++--
 libgfortran/generated/minval1_s4.c | 5 +++--
 libgfortran/m4/ifunction-s2.m4     | 1 -
 libgfortran/m4/maxval1s.m4         | 4 +++-
 libgfortran/m4/minval1s.m4         | 4 +++-
 7 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/libgfortran/generated/maxval1_s1.c 
b/libgfortran/generated/maxval1_s1.c
index e4c487e3cb77..9a9e8e0d3a83 100644
--- a/libgfortran/generated/maxval1_s1.c
+++ b/libgfortran/generated/maxval1_s1.c
@@ -359,8 +359,10 @@ mmaxval1_s1 (gfc_array_s1 * const restrict retarray,
                        retval = src;
                        break;
                      }
+               src = (GFC_UINTEGER_1*) (((char*)src) + delta);
+               msrc += mdelta;
            }
-           for (; n < len; n++, src += delta, msrc += mdelta)
+           for (; n < len; n++)
              {
                if (*msrc && compare_fcn (src, retval, string_len) > 0)
                  {
@@ -419,7 +421,6 @@ smaxval1_s1 (gfc_array_s1 * const restrict retarray,
        gfc_charlen_type xlen, gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim,
        GFC_LOGICAL_4 *mask, gfc_charlen_type string_len)
-
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
diff --git a/libgfortran/generated/maxval1_s4.c 
b/libgfortran/generated/maxval1_s4.c
index 686e18276a12..0c2d4733a9ff 100644
--- a/libgfortran/generated/maxval1_s4.c
+++ b/libgfortran/generated/maxval1_s4.c
@@ -359,8 +359,10 @@ mmaxval1_s4 (gfc_array_s4 * const restrict retarray,
                        retval = src;
                        break;
                      }
+               src = (GFC_UINTEGER_4*) (((char*)src) + delta);
+               msrc += mdelta;
            }
-           for (; n < len; n++, src += delta, msrc += mdelta)
+           for (; n < len; n++)
              {
                if (*msrc && compare_fcn (src, retval, string_len) > 0)
                  {
@@ -419,7 +421,6 @@ smaxval1_s4 (gfc_array_s4 * const restrict retarray,
        gfc_charlen_type xlen, gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim,
        GFC_LOGICAL_4 *mask, gfc_charlen_type string_len)
-
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
diff --git a/libgfortran/generated/minval1_s1.c 
b/libgfortran/generated/minval1_s1.c
index 00f4473c3b45..cd60a26b8ef9 100644
--- a/libgfortran/generated/minval1_s1.c
+++ b/libgfortran/generated/minval1_s1.c
@@ -359,8 +359,10 @@ mminval1_s1 (gfc_array_s1 * const restrict retarray,
                        retval = src;
                        break;
                      }
+               src = (GFC_UINTEGER_1*) (((char*)src) + delta);
+               msrc += mdelta;
            }
-           for (; n < len; n++, src += delta, msrc += mdelta)
+           for (; n < len; n++)
              {
                if (*msrc && compare_fcn (src, retval, string_len) < 0)
                  {
@@ -419,7 +421,6 @@ sminval1_s1 (gfc_array_s1 * const restrict retarray,
        gfc_charlen_type xlen, gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim,
        GFC_LOGICAL_4 *mask, gfc_charlen_type string_len)
-
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
diff --git a/libgfortran/generated/minval1_s4.c 
b/libgfortran/generated/minval1_s4.c
index 1ecbc7b75f25..9a21602c30b1 100644
--- a/libgfortran/generated/minval1_s4.c
+++ b/libgfortran/generated/minval1_s4.c
@@ -359,8 +359,10 @@ mminval1_s4 (gfc_array_s4 * const restrict retarray,
                        retval = src;
                        break;
                      }
+               src = (GFC_UINTEGER_4*) (((char*)src) + delta);
+               msrc += mdelta;
            }
-           for (; n < len; n++, src += delta, msrc += mdelta)
+           for (; n < len; n++)
              {
                if (*msrc && compare_fcn (src, retval, string_len) < 0)
                  {
@@ -419,7 +421,6 @@ sminval1_s4 (gfc_array_s4 * const restrict retarray,
        gfc_charlen_type xlen, gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim,
        GFC_LOGICAL_4 *mask, gfc_charlen_type string_len)
-
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
diff --git a/libgfortran/m4/ifunction-s2.m4 b/libgfortran/m4/ifunction-s2.m4
index beb3fd95ad11..4da7080f1d7b 100644
--- a/libgfortran/m4/ifunction-s2.m4
+++ b/libgfortran/m4/ifunction-s2.m4
@@ -391,7 +391,6 @@ s'name`'rtype_qual`_'atype_code` ('rtype` * const restrict 
retarray,
        gfc_charlen_type xlen, 'atype` * const restrict array, 
        const index_type * const restrict pdim,
        GFC_LOGICAL_4 *mask, gfc_charlen_type string_len)
-
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
diff --git a/libgfortran/m4/maxval1s.m4 b/libgfortran/m4/maxval1s.m4
index 602347ab0b5c..b9091461f7ec 100644
--- a/libgfortran/m4/maxval1s.m4
+++ b/libgfortran/m4/maxval1s.m4
@@ -47,8 +47,10 @@ MASKED_ARRAY_FUNCTION(0,
                        retval = src;
                        break;
                      }
+               src = ('atype_name`*) (((char*)src) + delta);
+               msrc += mdelta;
            }
-           for (; n < len; n++, src += delta, msrc += mdelta)
+           for (; n < len; n++)
              {
                if (*msrc && compare_fcn (src, retval, string_len) > 0)
                  {
diff --git a/libgfortran/m4/minval1s.m4 b/libgfortran/m4/minval1s.m4
index 30ac98674a55..8a6f185af4f3 100644
--- a/libgfortran/m4/minval1s.m4
+++ b/libgfortran/m4/minval1s.m4
@@ -47,8 +47,10 @@ MASKED_ARRAY_FUNCTION(255,
                        retval = src;
                        break;
                      }
+               src = ('atype_name`*) (((char*)src) + delta);
+               msrc += mdelta;
            }
-           for (; n < len; n++, src += delta, msrc += mdelta)
+           for (; n < len; n++)
              {
                if (*msrc && compare_fcn (src, retval, string_len) < 0)
                  {

Reply via email to