https://gcc.gnu.org/g:87e3baca4b69a856c3857702d4b83394eb6286c0

commit 87e3baca4b69a856c3857702d4b83394eb6286c0
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Wed May 28 15:34:53 2025 +0200

    Correction régression intrinsic_spread_1

Diff:
---
 libgfortran/generated/spread_c10.c      | 5 ++---
 libgfortran/generated/spread_c16.c      | 5 ++---
 libgfortran/generated/spread_c17.c      | 5 ++---
 libgfortran/generated/spread_c4.c       | 5 ++---
 libgfortran/generated/spread_c8.c       | 5 ++---
 libgfortran/generated/spread_i1.c       | 5 ++---
 libgfortran/generated/spread_i16.c      | 5 ++---
 libgfortran/generated/spread_i2.c       | 5 ++---
 libgfortran/generated/spread_i4.c       | 5 ++---
 libgfortran/generated/spread_i8.c       | 5 ++---
 libgfortran/generated/spread_r10.c      | 5 ++---
 libgfortran/generated/spread_r16.c      | 5 ++---
 libgfortran/generated/spread_r17.c      | 5 ++---
 libgfortran/generated/spread_r4.c       | 5 ++---
 libgfortran/generated/spread_r8.c       | 5 ++---
 libgfortran/intrinsics/spread_generic.c | 5 ++---
 libgfortran/m4/spread.m4                | 5 ++---
 17 files changed, 34 insertions(+), 51 deletions(-)

diff --git a/libgfortran/generated/spread_c10.c 
b/libgfortran/generated/spread_c10.c
index 35a46a088796..d0efc10f5afe 100644
--- a/libgfortran/generated/spread_c10.c
+++ b/libgfortran/generated/spread_c10.c
@@ -247,9 +247,8 @@ spread_scalar_c10 (gfc_array_c10 *ret, const GFC_COMPLEX_10 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_c16.c 
b/libgfortran/generated/spread_c16.c
index a5537600fb00..a2293d1ee9df 100644
--- a/libgfortran/generated/spread_c16.c
+++ b/libgfortran/generated/spread_c16.c
@@ -247,9 +247,8 @@ spread_scalar_c16 (gfc_array_c16 *ret, const GFC_COMPLEX_16 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_c17.c 
b/libgfortran/generated/spread_c17.c
index ecf99d32abc6..d4fbc68ea123 100644
--- a/libgfortran/generated/spread_c17.c
+++ b/libgfortran/generated/spread_c17.c
@@ -247,9 +247,8 @@ spread_scalar_c17 (gfc_array_c17 *ret, const GFC_COMPLEX_17 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_c4.c 
b/libgfortran/generated/spread_c4.c
index dcf621dad033..41e5109097ea 100644
--- a/libgfortran/generated/spread_c4.c
+++ b/libgfortran/generated/spread_c4.c
@@ -247,9 +247,8 @@ spread_scalar_c4 (gfc_array_c4 *ret, const GFC_COMPLEX_4 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_c8.c 
b/libgfortran/generated/spread_c8.c
index f9304954d823..28e1b3efae43 100644
--- a/libgfortran/generated/spread_c8.c
+++ b/libgfortran/generated/spread_c8.c
@@ -247,9 +247,8 @@ spread_scalar_c8 (gfc_array_c8 *ret, const GFC_COMPLEX_8 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_i1.c 
b/libgfortran/generated/spread_i1.c
index 3652320a0650..a6740e474781 100644
--- a/libgfortran/generated/spread_i1.c
+++ b/libgfortran/generated/spread_i1.c
@@ -247,9 +247,8 @@ spread_scalar_i1 (gfc_array_i1 *ret, const GFC_INTEGER_1 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_i16.c 
b/libgfortran/generated/spread_i16.c
index 0c6d7d0b3de7..86c66cb56dca 100644
--- a/libgfortran/generated/spread_i16.c
+++ b/libgfortran/generated/spread_i16.c
@@ -247,9 +247,8 @@ spread_scalar_i16 (gfc_array_i16 *ret, const GFC_INTEGER_16 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_i2.c 
b/libgfortran/generated/spread_i2.c
index 61cfb4f7f457..8b4ecc034eed 100644
--- a/libgfortran/generated/spread_i2.c
+++ b/libgfortran/generated/spread_i2.c
@@ -247,9 +247,8 @@ spread_scalar_i2 (gfc_array_i2 *ret, const GFC_INTEGER_2 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_i4.c 
b/libgfortran/generated/spread_i4.c
index 23ea88ba06ab..38c8665fbb15 100644
--- a/libgfortran/generated/spread_i4.c
+++ b/libgfortran/generated/spread_i4.c
@@ -247,9 +247,8 @@ spread_scalar_i4 (gfc_array_i4 *ret, const GFC_INTEGER_4 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_i8.c 
b/libgfortran/generated/spread_i8.c
index 582797c141f6..a3f1144c802c 100644
--- a/libgfortran/generated/spread_i8.c
+++ b/libgfortran/generated/spread_i8.c
@@ -247,9 +247,8 @@ spread_scalar_i8 (gfc_array_i8 *ret, const GFC_INTEGER_8 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_r10.c 
b/libgfortran/generated/spread_r10.c
index 6ddb028e80c9..ecf979637eaf 100644
--- a/libgfortran/generated/spread_r10.c
+++ b/libgfortran/generated/spread_r10.c
@@ -247,9 +247,8 @@ spread_scalar_r10 (gfc_array_r10 *ret, const GFC_REAL_10 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_r16.c 
b/libgfortran/generated/spread_r16.c
index 80876cb1eec4..90b6f71a1eab 100644
--- a/libgfortran/generated/spread_r16.c
+++ b/libgfortran/generated/spread_r16.c
@@ -247,9 +247,8 @@ spread_scalar_r16 (gfc_array_r16 *ret, const GFC_REAL_16 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_r17.c 
b/libgfortran/generated/spread_r17.c
index 26756978e4dc..8909b318c713 100644
--- a/libgfortran/generated/spread_r17.c
+++ b/libgfortran/generated/spread_r17.c
@@ -247,9 +247,8 @@ spread_scalar_r17 (gfc_array_r17 *ret, const GFC_REAL_17 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_r4.c 
b/libgfortran/generated/spread_r4.c
index 6b2b6bd2dc7a..b5cef8e517fb 100644
--- a/libgfortran/generated/spread_r4.c
+++ b/libgfortran/generated/spread_r4.c
@@ -247,9 +247,8 @@ spread_scalar_r4 (gfc_array_r4 *ret, const GFC_REAL_4 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/generated/spread_r8.c 
b/libgfortran/generated/spread_r8.c
index 9ef1b70122d2..9196aa7eddb4 100644
--- a/libgfortran/generated/spread_r8.c
+++ b/libgfortran/generated/spread_r8.c
@@ -247,9 +247,8 @@ spread_scalar_r8 (gfc_array_r8 *ret, const GFC_REAL_8 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;
diff --git a/libgfortran/intrinsics/spread_generic.c 
b/libgfortran/intrinsics/spread_generic.c
index 7f63e8b6c4e2..13ec0212fc0e 100644
--- a/libgfortran/intrinsics/spread_generic.c
+++ b/libgfortran/intrinsics/spread_generic.c
@@ -256,9 +256,8 @@ spread_internal_scalar (gfc_array_char *ret, const char 
*source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0)  - 1)
-                          / GFC_DESCRIPTOR_STRIDE(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies doesn't match result extent in spread()");
     }
 
   for (n = 0; n < ncopies; n++)
diff --git a/libgfortran/m4/spread.m4 b/libgfortran/m4/spread.m4
index b2e0d84be642..4d5804ed24f3 100644
--- a/libgfortran/m4/spread.m4
+++ b/libgfortran/m4/spread.m4
@@ -248,9 +248,8 @@ spread_scalar_'rtype_code` ('rtype` *ret, const 
'rtype_name` *source,
     }
   else
     {
-      if (ncopies - 1 > (GFC_DESCRIPTOR_EXTENT(ret,0) - 1)
-                          / GFC_DESCRIPTOR_SPACING(ret,0))
-       runtime_error ("dim too large in spread()");
+      if (ncopies != GFC_DESCRIPTOR_EXTENT(ret,0))
+       runtime_error ("ncopies does not match result extent in spread()");
     }
 
   dest = ret->base_addr;

Reply via email to