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

commit f7251052ef397e60bb1d2f6fad48a45412d049d8
Author: Mikael Morin <[email protected]>
Date:   Tue Sep 9 17:56:57 2025 +0200

    Correction pack.m4

Diff:
---
 libgfortran/generated/pack_c10.c | 12 ++++++------
 libgfortran/generated/pack_c16.c | 12 ++++++------
 libgfortran/generated/pack_c17.c | 12 ++++++------
 libgfortran/generated/pack_c4.c  | 12 ++++++------
 libgfortran/generated/pack_c8.c  | 12 ++++++------
 libgfortran/generated/pack_i1.c  | 12 ++++++------
 libgfortran/generated/pack_i16.c | 12 ++++++------
 libgfortran/generated/pack_i2.c  | 12 ++++++------
 libgfortran/generated/pack_i4.c  | 12 ++++++------
 libgfortran/generated/pack_i8.c  | 12 ++++++------
 libgfortran/generated/pack_r10.c | 12 ++++++------
 libgfortran/generated/pack_r16.c | 12 ++++++------
 libgfortran/generated/pack_r17.c | 12 ++++++------
 libgfortran/generated/pack_r4.c  | 12 ++++++------
 libgfortran/generated/pack_r8.c  | 12 ++++++------
 libgfortran/m4/pack.m4           | 12 ++++++------
 16 files changed, 96 insertions(+), 96 deletions(-)

diff --git a/libgfortran/generated/pack_c10.c b/libgfortran/generated/pack_c10.c
index 4eecd6c5b99b..fd2af090cc95 100644
--- a/libgfortran/generated/pack_c10.c
+++ b/libgfortran/generated/pack_c10.c
@@ -130,7 +130,7 @@ pack_c10 (gfc_array_c10 *ret, const gfc_array_c10 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_COMPLEX_10);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_c10 (gfc_array_c10 *ret, const gfc_array_c10 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_COMPLEX_10);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_c10 (gfc_array_c10 *ret, const gfc_array_c10 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_COMPLEX_10);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_COMPLEX_10 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_c16.c b/libgfortran/generated/pack_c16.c
index 34166af630ab..17ae51c83778 100644
--- a/libgfortran/generated/pack_c16.c
+++ b/libgfortran/generated/pack_c16.c
@@ -130,7 +130,7 @@ pack_c16 (gfc_array_c16 *ret, const gfc_array_c16 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_COMPLEX_16);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_c16 (gfc_array_c16 *ret, const gfc_array_c16 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_COMPLEX_16);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_c16 (gfc_array_c16 *ret, const gfc_array_c16 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_COMPLEX_16);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_COMPLEX_16 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_c17.c b/libgfortran/generated/pack_c17.c
index af7784f318b3..4da81441032b 100644
--- a/libgfortran/generated/pack_c17.c
+++ b/libgfortran/generated/pack_c17.c
@@ -130,7 +130,7 @@ pack_c17 (gfc_array_c17 *ret, const gfc_array_c17 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_COMPLEX_17);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_c17 (gfc_array_c17 *ret, const gfc_array_c17 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_COMPLEX_17);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_c17 (gfc_array_c17 *ret, const gfc_array_c17 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_COMPLEX_17);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_COMPLEX_17 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_c4.c b/libgfortran/generated/pack_c4.c
index 2cc776083c03..29dd981b4de6 100644
--- a/libgfortran/generated/pack_c4.c
+++ b/libgfortran/generated/pack_c4.c
@@ -130,7 +130,7 @@ pack_c4 (gfc_array_c4 *ret, const gfc_array_c4 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_COMPLEX_4);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_c4 (gfc_array_c4 *ret, const gfc_array_c4 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_COMPLEX_4);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_c4 (gfc_array_c4 *ret, const gfc_array_c4 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_COMPLEX_4);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_COMPLEX_4 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_c8.c b/libgfortran/generated/pack_c8.c
index bcd44d429a81..2bf8dfae04fb 100644
--- a/libgfortran/generated/pack_c8.c
+++ b/libgfortran/generated/pack_c8.c
@@ -130,7 +130,7 @@ pack_c8 (gfc_array_c8 *ret, const gfc_array_c8 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_COMPLEX_8);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_c8 (gfc_array_c8 *ret, const gfc_array_c8 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_COMPLEX_8);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_c8 (gfc_array_c8 *ret, const gfc_array_c8 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_COMPLEX_8);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_COMPLEX_8 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_i1.c b/libgfortran/generated/pack_i1.c
index 41855f2bbb70..5ba4adfc7525 100644
--- a/libgfortran/generated/pack_i1.c
+++ b/libgfortran/generated/pack_i1.c
@@ -130,7 +130,7 @@ pack_i1 (gfc_array_i1 *ret, const gfc_array_i1 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_INTEGER_1);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_i1 (gfc_array_i1 *ret, const gfc_array_i1 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_INTEGER_1);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_i1 (gfc_array_i1 *ret, const gfc_array_i1 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_INTEGER_1);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_INTEGER_1 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_i16.c b/libgfortran/generated/pack_i16.c
index 2d12c0f4fb5c..749fa8661c2c 100644
--- a/libgfortran/generated/pack_i16.c
+++ b/libgfortran/generated/pack_i16.c
@@ -130,7 +130,7 @@ pack_i16 (gfc_array_i16 *ret, const gfc_array_i16 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_INTEGER_16);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_i16 (gfc_array_i16 *ret, const gfc_array_i16 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_INTEGER_16);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_i16 (gfc_array_i16 *ret, const gfc_array_i16 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_INTEGER_16);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_INTEGER_16 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_i2.c b/libgfortran/generated/pack_i2.c
index 6e0f489c0512..088b615fa2ac 100644
--- a/libgfortran/generated/pack_i2.c
+++ b/libgfortran/generated/pack_i2.c
@@ -130,7 +130,7 @@ pack_i2 (gfc_array_i2 *ret, const gfc_array_i2 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_INTEGER_2);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_i2 (gfc_array_i2 *ret, const gfc_array_i2 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_INTEGER_2);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_i2 (gfc_array_i2 *ret, const gfc_array_i2 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_INTEGER_2);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_INTEGER_2 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_i4.c b/libgfortran/generated/pack_i4.c
index a2b54bf37538..3662e418e891 100644
--- a/libgfortran/generated/pack_i4.c
+++ b/libgfortran/generated/pack_i4.c
@@ -130,7 +130,7 @@ pack_i4 (gfc_array_i4 *ret, const gfc_array_i4 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_INTEGER_4);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_i4 (gfc_array_i4 *ret, const gfc_array_i4 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_INTEGER_4);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_i4 (gfc_array_i4 *ret, const gfc_array_i4 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_INTEGER_4);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_INTEGER_4 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_i8.c b/libgfortran/generated/pack_i8.c
index 9bf521ce1054..ff1212c0660e 100644
--- a/libgfortran/generated/pack_i8.c
+++ b/libgfortran/generated/pack_i8.c
@@ -130,7 +130,7 @@ pack_i8 (gfc_array_i8 *ret, const gfc_array_i8 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_INTEGER_8);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_i8 (gfc_array_i8 *ret, const gfc_array_i8 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_INTEGER_8);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_i8 (gfc_array_i8 *ret, const gfc_array_i8 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_INTEGER_8);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_INTEGER_8 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_r10.c b/libgfortran/generated/pack_r10.c
index a72e5fde4e5c..121d5106e04a 100644
--- a/libgfortran/generated/pack_r10.c
+++ b/libgfortran/generated/pack_r10.c
@@ -130,7 +130,7 @@ pack_r10 (gfc_array_r10 *ret, const gfc_array_r10 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_REAL_10);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_r10 (gfc_array_r10 *ret, const gfc_array_r10 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_REAL_10);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_r10 (gfc_array_r10 *ret, const gfc_array_r10 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_REAL_10);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_REAL_10 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_r16.c b/libgfortran/generated/pack_r16.c
index 4ec828d32d52..a8e206a63f96 100644
--- a/libgfortran/generated/pack_r16.c
+++ b/libgfortran/generated/pack_r16.c
@@ -130,7 +130,7 @@ pack_r16 (gfc_array_r16 *ret, const gfc_array_r16 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_REAL_16);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_r16 (gfc_array_r16 *ret, const gfc_array_r16 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_REAL_16);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_r16 (gfc_array_r16 *ret, const gfc_array_r16 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_REAL_16);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_REAL_16 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_r17.c b/libgfortran/generated/pack_r17.c
index a88caa8f4d6b..796df84d5669 100644
--- a/libgfortran/generated/pack_r17.c
+++ b/libgfortran/generated/pack_r17.c
@@ -130,7 +130,7 @@ pack_r17 (gfc_array_r17 *ret, const gfc_array_r17 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_REAL_17);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_r17 (gfc_array_r17 *ret, const gfc_array_r17 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_REAL_17);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_r17 (gfc_array_r17 *ret, const gfc_array_r17 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_REAL_17);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_REAL_17 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_r4.c b/libgfortran/generated/pack_r4.c
index d68fec2c3daf..422f2f95f6d7 100644
--- a/libgfortran/generated/pack_r4.c
+++ b/libgfortran/generated/pack_r4.c
@@ -130,7 +130,7 @@ pack_r4 (gfc_array_r4 *ret, const gfc_array_r4 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_REAL_4);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_r4 (gfc_array_r4 *ret, const gfc_array_r4 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_REAL_4);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_r4 (gfc_array_r4 *ret, const gfc_array_r4 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_REAL_4);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_REAL_4 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/generated/pack_r8.c b/libgfortran/generated/pack_r8.c
index c421518612bd..4f00c9f89ccc 100644
--- a/libgfortran/generated/pack_r8.c
+++ b/libgfortran/generated/pack_r8.c
@@ -130,7 +130,7 @@ pack_r8 (gfc_array_r8 *ret, const gfc_array_r8 *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof (GFC_REAL_8);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -189,7 +189,7 @@ pack_r8 (gfc_array_r8 *ret, const gfc_array_r8 *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof (GFC_REAL_8);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -237,14 +237,14 @@ pack_r8 (gfc_array_r8 *ret, const gfc_array_r8 *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof (GFC_REAL_8);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const GFC_REAL_8 *sptr) (((char*)vector->base_addr) + 
sstride0 * nelem);
           n -= nelem;
           while (n--)
             {
diff --git a/libgfortran/m4/pack.m4 b/libgfortran/m4/pack.m4
index bd1f83cd3be8..accbbfcd4b98 100644
--- a/libgfortran/m4/pack.m4
+++ b/libgfortran/m4/pack.m4
@@ -131,7 +131,7 @@ pack_'rtype_code` ('rtype` *ret, const 'rtype` *array,
       mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
     }
   if (sstride[0] == 0)
-    sstride[0] = GFC_DESCRIPTOR_SIZE(array);
+    sstride[0] = sizeof ('rtype_name`);
   if (mstride[0] == 0)
     mstride[0] = mask_kind;
 
@@ -190,7 +190,7 @@ pack_'rtype_code` ('rtype` *ret, const 'rtype` *array,
 
   rstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
   if (rstride0 == 0)
-    rstride0 = GFC_DESCRIPTOR_SIZE(ret);
+    rstride0 = sizeof ('rtype_name`);
   sstride0 = sstride[0];
   mstride0 = mstride[0];
   rptr = ret->base_addr;
@@ -238,14 +238,14 @@ pack_'rtype_code` ('rtype` *ret, const 'rtype` *array,
   if (vector)
     {
       n = GFC_DESCRIPTOR_EXTENT(vector,0);
-      nelem = ((rptr - ret->base_addr) / rstride0);
+      nelem = ((char*)rptr - (char*)ret->base_addr) / rstride0;
       if (n > nelem)
         {
-          sstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
+          sstride0 = GFC_DESCRIPTOR_STRIDE_BYTES(vector,0);
           if (sstride0 == 0)
-            sstride0 = 1;
+            sstride0 = sizeof ('rtype_name`);
 
-          sptr = vector->base_addr + sstride0 * nelem;
+          sptr = (const 'rtype_name` *) (((char*)vector->base_addr) + sstride0 
* nelem);
           n -= nelem;
           while (n--)
             {

Reply via email to