public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [patch, libgfortran] Initailize some variable to get rid of nuisance warnings.
@ 2023-02-26 19:52 Jerry D
  2023-02-26 20:59 ` Harald Anlauf
  0 siblings, 1 reply; 7+ messages in thread
From: Jerry D @ 2023-02-26 19:52 UTC (permalink / raw)
  To: gfortran; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 2775 bytes --]

The attached patch is minor and self explanatory.  I assume this should 
wait for gfortran 14 since no regression involved.  Please advise otherwise.

Regression tested on x86-64.

OK for trunk when the time is right?

Regards,

Jerry

Author: Jerry DeLisle <jvdelisle@gcc.gnu.org>
Date:   Sat Feb 25 20:30:35 2023 -0800

     Fortran: Eliminate nuisance warnings by initializing.

     Set sstride[0] and mstide[0] to zero, eliminating some warnings.

     libgfortran/ChangeLog:

             * generated/pack_c10.c (pack_c10): Regenerated.
             * generated/pack_c16.c (pack_c16): Regenerated.
             * generated/pack_c17.c (pack_c17): Regenerated.
             * generated/pack_c4.c (pack_c4): Regenerated.
             * generated/pack_c8.c (pack_c8): Regenerated.
             * generated/pack_i1.c (pack_i1): Regenerated.
             * generated/pack_i16.c (pack_i16): Regenerated.
             * generated/pack_i2.c (pack_i2): Regenerated.
             * generated/pack_i4.c (pack_i4): Regenerated.
             * generated/pack_i8.c (pack_i8): Regenerated.
             * generated/pack_r10.c (pack_r10): Regenerated.
             * generated/pack_r16.c (pack_r16): Regenerated.
             * generated/pack_r17.c (pack_r17): Regenerated.
             * generated/pack_r4.c (pack_r4): Regenerated.
             * generated/pack_r8.c (pack_r8): Regenerated.
             * generated/spread_c10.c (spread_c10): Regenerated.
             * generated/spread_c16.c (spread_c16): Regenerated.
             * generated/spread_c17.c (spread_c17): Regenerated.
             * generated/spread_c4.c (spread_c4): Regenerated.
             * generated/spread_c8.c (spread_c8): Regenerated.
             * generated/spread_i1.c (spread_i1): Regenerated.
             * generated/spread_i16.c (spread_i16): Regenerated.
             * generated/spread_i2.c (spread_i2): Regenerated.
             * generated/spread_i4.c (spread_i4): Regenerated.
             * generated/spread_i8.c (spread_i8): Regenerated.
             * generated/spread_r10.c (spread_r10): Regenerated.
             * generated/spread_r16.c (spread_r16): Regenerated.
             * generated/spread_r17.c (spread_r17): Regenerated.
             * generated/spread_r4.c (spread_r4): Regenerated.
             * generated/spread_r8.c (spread_r8): Regenerated.
             * intrinsics/execute_command_line.c (execute_command_line_i4),
             (execute_command_line_i8): Set estat_initial to zero.
             * intrinsics/pack_generic.c (pack_internal): Set sstride[0] and
             mstride[0] to zero.
             * intrinsics/spread_generic.c (spread_internal): Set 
sstride[0].
             * m4/pack.m4: Set sstride[0] and mstride[0].
             * m4/spread.m4: Set sstride[0].

[-- Attachment #2: warnings.diff --]
[-- Type: text/x-patch, Size: 17711 bytes --]

diff --git a/libgfortran/generated/pack_c10.c b/libgfortran/generated/pack_c10.c
index a961057a8a6..c01efd11cf8 100644
--- a/libgfortran/generated/pack_c10.c
+++ b/libgfortran/generated/pack_c10.c
@@ -96,6 +96,9 @@ pack_c10 (gfc_array_c10 *ret, const gfc_array_c10 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_c16.c b/libgfortran/generated/pack_c16.c
index 37c062798bb..8ee6b25cbe6 100644
--- a/libgfortran/generated/pack_c16.c
+++ b/libgfortran/generated/pack_c16.c
@@ -96,6 +96,9 @@ pack_c16 (gfc_array_c16 *ret, const gfc_array_c16 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_c17.c b/libgfortran/generated/pack_c17.c
index f9638d640ad..7a1cf5e17e8 100644
--- a/libgfortran/generated/pack_c17.c
+++ b/libgfortran/generated/pack_c17.c
@@ -96,6 +96,9 @@ pack_c17 (gfc_array_c17 *ret, const gfc_array_c17 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_c4.c b/libgfortran/generated/pack_c4.c
index d72717041a1..76c8a853fac 100644
--- a/libgfortran/generated/pack_c4.c
+++ b/libgfortran/generated/pack_c4.c
@@ -96,6 +96,9 @@ pack_c4 (gfc_array_c4 *ret, const gfc_array_c4 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_c8.c b/libgfortran/generated/pack_c8.c
index 9f8e97e4bc8..365c26ed0e8 100644
--- a/libgfortran/generated/pack_c8.c
+++ b/libgfortran/generated/pack_c8.c
@@ -96,6 +96,9 @@ pack_c8 (gfc_array_c8 *ret, const gfc_array_c8 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_i1.c b/libgfortran/generated/pack_i1.c
index 0f4fe72b3f5..97a82281a5c 100644
--- a/libgfortran/generated/pack_i1.c
+++ b/libgfortran/generated/pack_i1.c
@@ -96,6 +96,9 @@ pack_i1 (gfc_array_i1 *ret, const gfc_array_i1 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_i16.c b/libgfortran/generated/pack_i16.c
index 3c4169b88ca..a0aa6db29d8 100644
--- a/libgfortran/generated/pack_i16.c
+++ b/libgfortran/generated/pack_i16.c
@@ -96,6 +96,9 @@ pack_i16 (gfc_array_i16 *ret, const gfc_array_i16 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_i2.c b/libgfortran/generated/pack_i2.c
index c5878afc163..24efcaae17e 100644
--- a/libgfortran/generated/pack_i2.c
+++ b/libgfortran/generated/pack_i2.c
@@ -96,6 +96,9 @@ pack_i2 (gfc_array_i2 *ret, const gfc_array_i2 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_i4.c b/libgfortran/generated/pack_i4.c
index 45f5d05918b..6642f2b0bc1 100644
--- a/libgfortran/generated/pack_i4.c
+++ b/libgfortran/generated/pack_i4.c
@@ -96,6 +96,9 @@ pack_i4 (gfc_array_i4 *ret, const gfc_array_i4 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_i8.c b/libgfortran/generated/pack_i8.c
index c45fc27c04a..0f6ce94f036 100644
--- a/libgfortran/generated/pack_i8.c
+++ b/libgfortran/generated/pack_i8.c
@@ -96,6 +96,9 @@ pack_i8 (gfc_array_i8 *ret, const gfc_array_i8 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_r10.c b/libgfortran/generated/pack_r10.c
index 1211fc492af..7dd232853b4 100644
--- a/libgfortran/generated/pack_r10.c
+++ b/libgfortran/generated/pack_r10.c
@@ -96,6 +96,9 @@ pack_r10 (gfc_array_r10 *ret, const gfc_array_r10 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_r16.c b/libgfortran/generated/pack_r16.c
index e6d6c7cfb8e..6db5e65e16f 100644
--- a/libgfortran/generated/pack_r16.c
+++ b/libgfortran/generated/pack_r16.c
@@ -96,6 +96,9 @@ pack_r16 (gfc_array_r16 *ret, const gfc_array_r16 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_r17.c b/libgfortran/generated/pack_r17.c
index 02e0b9622cb..6f9ff439559 100644
--- a/libgfortran/generated/pack_r17.c
+++ b/libgfortran/generated/pack_r17.c
@@ -96,6 +96,9 @@ pack_r17 (gfc_array_r17 *ret, const gfc_array_r17 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_r4.c b/libgfortran/generated/pack_r4.c
index 630d2a0e730..09132539ce9 100644
--- a/libgfortran/generated/pack_r4.c
+++ b/libgfortran/generated/pack_r4.c
@@ -96,6 +96,9 @@ pack_r4 (gfc_array_r4 *ret, const gfc_array_r4 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/pack_r8.c b/libgfortran/generated/pack_r8.c
index 90d66bbc04b..96b648aca4e 100644
--- a/libgfortran/generated/pack_r8.c
+++ b/libgfortran/generated/pack_r8.c
@@ -96,6 +96,9 @@ pack_r8 (gfc_array_r8 *ret, const gfc_array_r8 *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/generated/spread_c10.c b/libgfortran/generated/spread_c10.c
index 485f4ad1431..987a81c0d7b 100644
--- a/libgfortran/generated/spread_c10.c
+++ b/libgfortran/generated/spread_c10.c
@@ -56,6 +56,8 @@ spread_c10 (gfc_array_c10 *ret, const gfc_array_c10 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_c16.c b/libgfortran/generated/spread_c16.c
index 23ed7a6684f..d7969a14a6a 100644
--- a/libgfortran/generated/spread_c16.c
+++ b/libgfortran/generated/spread_c16.c
@@ -56,6 +56,8 @@ spread_c16 (gfc_array_c16 *ret, const gfc_array_c16 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_c17.c b/libgfortran/generated/spread_c17.c
index f6d13e97e21..3011c365c14 100644
--- a/libgfortran/generated/spread_c17.c
+++ b/libgfortran/generated/spread_c17.c
@@ -56,6 +56,8 @@ spread_c17 (gfc_array_c17 *ret, const gfc_array_c17 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_c4.c b/libgfortran/generated/spread_c4.c
index 322c86061be..f0550d36e2b 100644
--- a/libgfortran/generated/spread_c4.c
+++ b/libgfortran/generated/spread_c4.c
@@ -56,6 +56,8 @@ spread_c4 (gfc_array_c4 *ret, const gfc_array_c4 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_c8.c b/libgfortran/generated/spread_c8.c
index 9a06ee29718..b93518fb900 100644
--- a/libgfortran/generated/spread_c8.c
+++ b/libgfortran/generated/spread_c8.c
@@ -56,6 +56,8 @@ spread_c8 (gfc_array_c8 *ret, const gfc_array_c8 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_i1.c b/libgfortran/generated/spread_i1.c
index fc140e25f68..3c913a30397 100644
--- a/libgfortran/generated/spread_i1.c
+++ b/libgfortran/generated/spread_i1.c
@@ -56,6 +56,8 @@ spread_i1 (gfc_array_i1 *ret, const gfc_array_i1 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_i16.c b/libgfortran/generated/spread_i16.c
index 80ace87ae87..61dc5c49ad9 100644
--- a/libgfortran/generated/spread_i16.c
+++ b/libgfortran/generated/spread_i16.c
@@ -56,6 +56,8 @@ spread_i16 (gfc_array_i16 *ret, const gfc_array_i16 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_i2.c b/libgfortran/generated/spread_i2.c
index 0815de1e2f2..28a4f8b1a7c 100644
--- a/libgfortran/generated/spread_i2.c
+++ b/libgfortran/generated/spread_i2.c
@@ -56,6 +56,8 @@ spread_i2 (gfc_array_i2 *ret, const gfc_array_i2 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_i4.c b/libgfortran/generated/spread_i4.c
index 4873c59c659..a0a53322d16 100644
--- a/libgfortran/generated/spread_i4.c
+++ b/libgfortran/generated/spread_i4.c
@@ -56,6 +56,8 @@ spread_i4 (gfc_array_i4 *ret, const gfc_array_i4 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_i8.c b/libgfortran/generated/spread_i8.c
index f212bc63639..206bbbbb367 100644
--- a/libgfortran/generated/spread_i8.c
+++ b/libgfortran/generated/spread_i8.c
@@ -56,6 +56,8 @@ spread_i8 (gfc_array_i8 *ret, const gfc_array_i8 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_r10.c b/libgfortran/generated/spread_r10.c
index 95816263aee..07608385984 100644
--- a/libgfortran/generated/spread_r10.c
+++ b/libgfortran/generated/spread_r10.c
@@ -56,6 +56,8 @@ spread_r10 (gfc_array_r10 *ret, const gfc_array_r10 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_r16.c b/libgfortran/generated/spread_r16.c
index 6856f70122a..af6075e6b3d 100644
--- a/libgfortran/generated/spread_r16.c
+++ b/libgfortran/generated/spread_r16.c
@@ -56,6 +56,8 @@ spread_r16 (gfc_array_r16 *ret, const gfc_array_r16 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_r17.c b/libgfortran/generated/spread_r17.c
index f2a459528dd..cb765d3212e 100644
--- a/libgfortran/generated/spread_r17.c
+++ b/libgfortran/generated/spread_r17.c
@@ -56,6 +56,8 @@ spread_r17 (gfc_array_r17 *ret, const gfc_array_r17 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_r4.c b/libgfortran/generated/spread_r4.c
index 5a52870c537..8fdb722e523 100644
--- a/libgfortran/generated/spread_r4.c
+++ b/libgfortran/generated/spread_r4.c
@@ -56,6 +56,8 @@ spread_r4 (gfc_array_r4 *ret, const gfc_array_r4 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/generated/spread_r8.c b/libgfortran/generated/spread_r8.c
index 3bc847f000e..ecfe9ad4e8b 100644
--- a/libgfortran/generated/spread_r8.c
+++ b/libgfortran/generated/spread_r8.c
@@ -56,6 +56,8 @@ spread_r8 (gfc_array_r8 *ret, const gfc_array_r8 *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/intrinsics/execute_command_line.c b/libgfortran/intrinsics/execute_command_line.c
index 0d1688400c2..c2bcaf05f0b 100644
--- a/libgfortran/intrinsics/execute_command_line.c
+++ b/libgfortran/intrinsics/execute_command_line.c
@@ -192,6 +192,8 @@ execute_command_line_i4 (const char *command, GFC_LOGICAL_4 *wait,
   bool w = wait ? *wait : true;
   int estat, estat_initial, cstat;
 
+  estat_initial = 0; /* Avoid nuisance warning if not initialized.  */
+
   if (exitstat)
     estat_initial = estat = *exitstat;
 
@@ -221,6 +223,8 @@ execute_command_line_i8 (const char *command, GFC_LOGICAL_8 *wait,
   bool w = wait ? *wait : true;
   int estat, estat_initial, cstat;
 
+  estat_initial = 0; /* Avoid nuisance warning if not initialized.  */
+
   if (exitstat)
     estat_initial = estat = *exitstat;
 
diff --git a/libgfortran/intrinsics/pack_generic.c b/libgfortran/intrinsics/pack_generic.c
index 5bc7f1c254b..cc7c8497ba1 100644
--- a/libgfortran/intrinsics/pack_generic.c
+++ b/libgfortran/intrinsics/pack_generic.c
@@ -94,6 +94,9 @@ pack_internal (gfc_array_char *ret, const gfc_array_char *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   sptr = array->base_addr;
   mptr = mask->base_addr;
 
diff --git a/libgfortran/intrinsics/spread_generic.c b/libgfortran/intrinsics/spread_generic.c
index 7e3c8d5b04d..5b6df95447e 100644
--- a/libgfortran/intrinsics/spread_generic.c
+++ b/libgfortran/intrinsics/spread_generic.c
@@ -55,6 +55,8 @@ spread_internal (gfc_array_char *ret, const gfc_array_char *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");
diff --git a/libgfortran/m4/pack.m4 b/libgfortran/m4/pack.m4
index 3003355c2c9..8bb8c250ceb 100644
--- a/libgfortran/m4/pack.m4
+++ b/libgfortran/m4/pack.m4
@@ -97,6 +97,9 @@ pack_'rtype_code` ('rtype` *ret, const 'rtype` *array,
 
   dim = GFC_DESCRIPTOR_RANK (array);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  mstride[0] = 0;
+
   mptr = mask->base_addr;
 
   /* Use the same loop for all logical types, by using GFC_LOGICAL_1
diff --git a/libgfortran/m4/spread.m4 b/libgfortran/m4/spread.m4
index 0d70345f8e0..edb46ef1b85 100644
--- a/libgfortran/m4/spread.m4
+++ b/libgfortran/m4/spread.m4
@@ -57,6 +57,8 @@ spread_'rtype_code` ('rtype` *ret, const 'rtype` *source,
 
   srank = GFC_DESCRIPTOR_RANK(source);
 
+  sstride[0] = 0; /* Avoid warnings if not initialized.  */
+  
   rrank = srank + 1;
   if (rrank > GFC_MAX_DIMENSIONS)
     runtime_error ("return rank too large in spread()");

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch, libgfortran] Initailize some variable to get rid of nuisance warnings.
  2023-02-26 19:52 [patch, libgfortran] Initailize some variable to get rid of nuisance warnings Jerry D
@ 2023-02-26 20:59 ` Harald Anlauf
  2023-02-26 20:59   ` Harald Anlauf
  2023-02-27  2:53   ` Jerry D
  0 siblings, 2 replies; 7+ messages in thread
From: Harald Anlauf @ 2023-02-26 20:59 UTC (permalink / raw)
  To: Jerry D, gfortran; +Cc: gcc-patches

Hi Jerry,

regarding PACK: since this is a bogus warning as the compiler does
not realize that dim >= 1, wouldn't a

gcc_assert (dim >= 1);

in the right place achieve the same effect, since the first argument
must be an array?

(It's different for SPREAD, though, where SOURCE may be scalar).

Cheers,
Harald

Am 26.02.23 um 20:52 schrieb Jerry D via Gcc-patches:
> The attached patch is minor and self explanatory.  I assume this should 
> wait for gfortran 14 since no regression involved.  Please advise 
> otherwise.
> 
> Regression tested on x86-64.
> 
> OK for trunk when the time is right?
> 
> Regards,
> 
> Jerry
> 
> Author: Jerry DeLisle <jvdelisle@gcc.gnu.org>
> Date:   Sat Feb 25 20:30:35 2023 -0800
> 
>      Fortran: Eliminate nuisance warnings by initializing.
> 
>      Set sstride[0] and mstide[0] to zero, eliminating some warnings.
> 
>      libgfortran/ChangeLog:
> 
>              * generated/pack_c10.c (pack_c10): Regenerated.
>              * generated/pack_c16.c (pack_c16): Regenerated.
>              * generated/pack_c17.c (pack_c17): Regenerated.
>              * generated/pack_c4.c (pack_c4): Regenerated.
>              * generated/pack_c8.c (pack_c8): Regenerated.
>              * generated/pack_i1.c (pack_i1): Regenerated.
>              * generated/pack_i16.c (pack_i16): Regenerated.
>              * generated/pack_i2.c (pack_i2): Regenerated.
>              * generated/pack_i4.c (pack_i4): Regenerated.
>              * generated/pack_i8.c (pack_i8): Regenerated.
>              * generated/pack_r10.c (pack_r10): Regenerated.
>              * generated/pack_r16.c (pack_r16): Regenerated.
>              * generated/pack_r17.c (pack_r17): Regenerated.
>              * generated/pack_r4.c (pack_r4): Regenerated.
>              * generated/pack_r8.c (pack_r8): Regenerated.
>              * generated/spread_c10.c (spread_c10): Regenerated.
>              * generated/spread_c16.c (spread_c16): Regenerated.
>              * generated/spread_c17.c (spread_c17): Regenerated.
>              * generated/spread_c4.c (spread_c4): Regenerated.
>              * generated/spread_c8.c (spread_c8): Regenerated.
>              * generated/spread_i1.c (spread_i1): Regenerated.
>              * generated/spread_i16.c (spread_i16): Regenerated.
>              * generated/spread_i2.c (spread_i2): Regenerated.
>              * generated/spread_i4.c (spread_i4): Regenerated.
>              * generated/spread_i8.c (spread_i8): Regenerated.
>              * generated/spread_r10.c (spread_r10): Regenerated.
>              * generated/spread_r16.c (spread_r16): Regenerated.
>              * generated/spread_r17.c (spread_r17): Regenerated.
>              * generated/spread_r4.c (spread_r4): Regenerated.
>              * generated/spread_r8.c (spread_r8): Regenerated.
>              * intrinsics/execute_command_line.c (execute_command_line_i4),
>              (execute_command_line_i8): Set estat_initial to zero.
>              * intrinsics/pack_generic.c (pack_internal): Set sstride[0] 
> and
>              mstride[0] to zero.
>              * intrinsics/spread_generic.c (spread_internal): Set 
> sstride[0].
>              * m4/pack.m4: Set sstride[0] and mstride[0].
>              * m4/spread.m4: Set sstride[0].


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch, libgfortran] Initailize some variable to get rid of nuisance warnings.
  2023-02-26 20:59 ` Harald Anlauf
@ 2023-02-26 20:59   ` Harald Anlauf
  2023-02-27  2:53   ` Jerry D
  1 sibling, 0 replies; 7+ messages in thread
From: Harald Anlauf @ 2023-02-26 20:59 UTC (permalink / raw)
  To: gcc-patches; +Cc: fortran

Hi Jerry,

regarding PACK: since this is a bogus warning as the compiler does
not realize that dim >= 1, wouldn't a

gcc_assert (dim >= 1);

in the right place achieve the same effect, since the first argument
must be an array?

(It's different for SPREAD, though, where SOURCE may be scalar).

Cheers,
Harald

Am 26.02.23 um 20:52 schrieb Jerry D via Gcc-patches:
> The attached patch is minor and self explanatory.  I assume this should 
> wait for gfortran 14 since no regression involved.  Please advise 
> otherwise.
> 
> Regression tested on x86-64.
> 
> OK for trunk when the time is right?
> 
> Regards,
> 
> Jerry
> 
> Author: Jerry DeLisle <jvdelisle@gcc.gnu.org>
> Date:   Sat Feb 25 20:30:35 2023 -0800
> 
>      Fortran: Eliminate nuisance warnings by initializing.
> 
>      Set sstride[0] and mstide[0] to zero, eliminating some warnings.
> 
>      libgfortran/ChangeLog:
> 
>              * generated/pack_c10.c (pack_c10): Regenerated.
>              * generated/pack_c16.c (pack_c16): Regenerated.
>              * generated/pack_c17.c (pack_c17): Regenerated.
>              * generated/pack_c4.c (pack_c4): Regenerated.
>              * generated/pack_c8.c (pack_c8): Regenerated.
>              * generated/pack_i1.c (pack_i1): Regenerated.
>              * generated/pack_i16.c (pack_i16): Regenerated.
>              * generated/pack_i2.c (pack_i2): Regenerated.
>              * generated/pack_i4.c (pack_i4): Regenerated.
>              * generated/pack_i8.c (pack_i8): Regenerated.
>              * generated/pack_r10.c (pack_r10): Regenerated.
>              * generated/pack_r16.c (pack_r16): Regenerated.
>              * generated/pack_r17.c (pack_r17): Regenerated.
>              * generated/pack_r4.c (pack_r4): Regenerated.
>              * generated/pack_r8.c (pack_r8): Regenerated.
>              * generated/spread_c10.c (spread_c10): Regenerated.
>              * generated/spread_c16.c (spread_c16): Regenerated.
>              * generated/spread_c17.c (spread_c17): Regenerated.
>              * generated/spread_c4.c (spread_c4): Regenerated.
>              * generated/spread_c8.c (spread_c8): Regenerated.
>              * generated/spread_i1.c (spread_i1): Regenerated.
>              * generated/spread_i16.c (spread_i16): Regenerated.
>              * generated/spread_i2.c (spread_i2): Regenerated.
>              * generated/spread_i4.c (spread_i4): Regenerated.
>              * generated/spread_i8.c (spread_i8): Regenerated.
>              * generated/spread_r10.c (spread_r10): Regenerated.
>              * generated/spread_r16.c (spread_r16): Regenerated.
>              * generated/spread_r17.c (spread_r17): Regenerated.
>              * generated/spread_r4.c (spread_r4): Regenerated.
>              * generated/spread_r8.c (spread_r8): Regenerated.
>              * intrinsics/execute_command_line.c (execute_command_line_i4),
>              (execute_command_line_i8): Set estat_initial to zero.
>              * intrinsics/pack_generic.c (pack_internal): Set sstride[0] 
> and
>              mstride[0] to zero.
>              * intrinsics/spread_generic.c (spread_internal): Set 
> sstride[0].
>              * m4/pack.m4: Set sstride[0] and mstride[0].
>              * m4/spread.m4: Set sstride[0].



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch, libgfortran] Initailize some variable to get rid of nuisance warnings.
  2023-02-26 20:59 ` Harald Anlauf
  2023-02-26 20:59   ` Harald Anlauf
@ 2023-02-27  2:53   ` Jerry D
  2023-02-27  6:30     ` Thomas Koenig
  2023-02-27  7:54     ` Tobias Burnus
  1 sibling, 2 replies; 7+ messages in thread
From: Jerry D @ 2023-02-27  2:53 UTC (permalink / raw)
  To: Harald Anlauf, gfortran; +Cc: gcc-patches

On 2/26/23 12:59 PM, Harald Anlauf wrote:
> Hi Jerry,
> 
> regarding PACK: since this is a bogus warning as the compiler does
> not realize that dim >= 1, wouldn't a
> 
> gcc_assert (dim >= 1);
> 
> in the right place achieve the same effect, since the first argument
> must be an array?
> 
> (It's different for SPREAD, though, where SOURCE may be scalar).
> 

I should have clarified in my posts that the warnings are on the use of 
sstride[0], mstride[0] or both. For example.

../../../trunk/libgfortran/generated/pack_i2.c: In function ‘pack_i2’:
../../../trunk/libgfortran/generated/pack_i2.c:129:14: warning: 
‘sstride’ may be used uninitialized [-Wmaybe-uninitialized]
   129 |   if (sstride[0] == 0)
       |       ~~~~~~~^~~
../../../trunk/libgfortran/generated/pack_i2.c:80:14: note: ‘sstride’ 
declared here
    80 |   index_type sstride[GFC_MAX_DIMENSIONS];
       |              ^~~~~~~
../../../trunk/libgfortran/generated/pack_i2.c:131:14: warning: 
‘mstride’ may be used uninitialized [-Wmaybe-uninitialized]
   131 |   if (mstride[0] == 0)
       |       ~~~~~~~^~~
../../../trunk/libgfortran/generated/pack_i2.c:84:14: note: ‘mstride’ 
declared here
    84 |   index_type mstride[GFC_MAX_DIMENSIONS];
       |              ^~~~~~~
../../../trunk/libgfortran/generated/pack_i2.c:131:14: warning: 
‘mstride’ may be used uninitialized [-Wmaybe-uninitialized]
   131 |   if (mstride[0] == 0)
       |       ~~~~~~~^~~
../../../trunk/libgfortran/generated/pack_i2.c:84:14: note: ‘mstride’ 
declared here
    84 |   index_type mstride[GFC_MAX_DIMENSIONS];
       |              ^~~~~~~

In a sense it is a regression. It showed up when builds started to use 
-Wmaybe-unitialized.

> Cheers,
> Harald
> 
> Am 26.02.23 um 20:52 schrieb Jerry D via Gcc-patches:
>> The attached patch is minor and self explanatory.  I assume this 
>> should wait for gfortran 14 since no regression involved.  Please 
>> advise otherwise.
>>
>> Regression tested on x86-64.
>>
>> OK for trunk when the time is right?
>>
>> Regards,
>>
>> Jerry
>>
>> Author: Jerry DeLisle <jvdelisle@gcc.gnu.org>
>> Date:   Sat Feb 25 20:30:35 2023 -0800
>>
>>      Fortran: Eliminate nuisance warnings by initializing.
>>
>>      Set sstride[0] and mstide[0] to zero, eliminating some warnings.
>>
>>      libgfortran/ChangeLog:
>>
>>              * generated/pack_c10.c (pack_c10): Regenerated.
>>              * generated/pack_c16.c (pack_c16): Regenerated.
>>              * generated/pack_c17.c (pack_c17): Regenerated.
>>              * generated/pack_c4.c (pack_c4): Regenerated.
>>              * generated/pack_c8.c (pack_c8): Regenerated.
>>              * generated/pack_i1.c (pack_i1): Regenerated.
>>              * generated/pack_i16.c (pack_i16): Regenerated.
>>              * generated/pack_i2.c (pack_i2): Regenerated.
>>              * generated/pack_i4.c (pack_i4): Regenerated.
>>              * generated/pack_i8.c (pack_i8): Regenerated.
>>              * generated/pack_r10.c (pack_r10): Regenerated.
>>              * generated/pack_r16.c (pack_r16): Regenerated.
>>              * generated/pack_r17.c (pack_r17): Regenerated.
>>              * generated/pack_r4.c (pack_r4): Regenerated.
>>              * generated/pack_r8.c (pack_r8): Regenerated.
>>              * generated/spread_c10.c (spread_c10): Regenerated.
>>              * generated/spread_c16.c (spread_c16): Regenerated.
>>              * generated/spread_c17.c (spread_c17): Regenerated.
>>              * generated/spread_c4.c (spread_c4): Regenerated.
>>              * generated/spread_c8.c (spread_c8): Regenerated.
>>              * generated/spread_i1.c (spread_i1): Regenerated.
>>              * generated/spread_i16.c (spread_i16): Regenerated.
>>              * generated/spread_i2.c (spread_i2): Regenerated.
>>              * generated/spread_i4.c (spread_i4): Regenerated.
>>              * generated/spread_i8.c (spread_i8): Regenerated.
>>              * generated/spread_r10.c (spread_r10): Regenerated.
>>              * generated/spread_r16.c (spread_r16): Regenerated.
>>              * generated/spread_r17.c (spread_r17): Regenerated.
>>              * generated/spread_r4.c (spread_r4): Regenerated.
>>              * generated/spread_r8.c (spread_r8): Regenerated.
>>              * intrinsics/execute_command_line.c 
>> (execute_command_line_i4),
>>              (execute_command_line_i8): Set estat_initial to zero.
>>              * intrinsics/pack_generic.c (pack_internal): Set 
>> sstride[0] and
>>              mstride[0] to zero.
>>              * intrinsics/spread_generic.c (spread_internal): Set 
>> sstride[0].
>>              * m4/pack.m4: Set sstride[0] and mstride[0].
>>              * m4/spread.m4: Set sstride[0].
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch, libgfortran] Initailize some variable to get rid of nuisance warnings.
  2023-02-27  2:53   ` Jerry D
@ 2023-02-27  6:30     ` Thomas Koenig
  2023-02-27  7:54     ` Tobias Burnus
  1 sibling, 0 replies; 7+ messages in thread
From: Thomas Koenig @ 2023-02-27  6:30 UTC (permalink / raw)
  To: Jerry D, Harald Anlauf, gfortran; +Cc: gcc-patches

Hi Jerry,


> I should have clarified in my posts that the warnings are on the use of 
> sstride[0], mstride[0] or both.


> In a sense it is a 
> regression. It showed up when builds started to use -Wmaybe-unitialized.

I think this is OK for trunk now, and backport for up to whenever
-Wmaybe-uninitialized was introduced into the build.

The "regression-only" rule is mostly motivated by not introducing
new bugs (and for Fortran, we have a bit of leeway), and I would
be hard to pressed to think of a patch less likely to introduce
regressions.

Thanks for the patch!

Best regards

	Thomas


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch, libgfortran] Initailize some variable to get rid of nuisance warnings.
  2023-02-27  2:53   ` Jerry D
  2023-02-27  6:30     ` Thomas Koenig
@ 2023-02-27  7:54     ` Tobias Burnus
  2023-02-28  2:16       ` Jerry D
  1 sibling, 1 reply; 7+ messages in thread
From: Tobias Burnus @ 2023-02-27  7:54 UTC (permalink / raw)
  To: Jerry D, Harald Anlauf, gfortran; +Cc: gcc-patches

Just side remarks, the 0 init in the patch is fine.

On 27.02.23 03:53, Jerry D via Gcc-patches wrote:

>> regarding PACK: since this is a bogus warning as the compiler does
>> not realize that dim >= 1, wouldn't a
>>
>> gcc_assert (dim >= 1);

Note: gcc_assert only exists in the compiler itself; in libgfortran, we
use GFC_ASSERT or directly 'assert'.

You could also use 'if (dim < 1) __builtin_unreachable();' – or since
GCC 13:

__attribute__((assume (dim >= 1)));

Tobias

PS: In Fortran, '-fopenmp-simd' plus '!$omp assume holds(dim>=0) ...
!$omp end assume' (or !$omp ... + block/end block) can be used to denote
such assumptions. '-fopenmp-simd' enables only those bits of OpenMP that
do not require any library support (no libgomp, no pthreads), contrary
to '-fopenmp'.

-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch, libgfortran] Initailize some variable to get rid of nuisance warnings.
  2023-02-27  7:54     ` Tobias Burnus
@ 2023-02-28  2:16       ` Jerry D
  0 siblings, 0 replies; 7+ messages in thread
From: Jerry D @ 2023-02-28  2:16 UTC (permalink / raw)
  To: Tobias Burnus, Harald Anlauf, gfortran; +Cc: gcc-patches

Pushed, thanks for feedback

On 2/26/23 11:54 PM, Tobias Burnus wrote:
> Just side remarks, the 0 init in the patch is fine.
> 
> On 27.02.23 03:53, Jerry D via Gcc-patches wrote:
> 
>>> regarding PACK: since this is a bogus warning as the compiler does
>>> not realize that dim >= 1, wouldn't a
>>>
>>> gcc_assert (dim >= 1);
> 
> Note: gcc_assert only exists in the compiler itself; in libgfortran, we
> use GFC_ASSERT or directly 'assert'.
> 
> You could also use 'if (dim < 1) __builtin_unreachable();' – or since
> GCC 13:
> 
> __attribute__((assume (dim >= 1)));
> 
> Tobias
> 
> PS: In Fortran, '-fopenmp-simd' plus '!$omp assume holds(dim>=0) ...
> !$omp end assume' (or !$omp ... + block/end block) can be used to denote
> such assumptions. '-fopenmp-simd' enables only those bits of OpenMP that
> do not require any library support (no libgomp, no pthreads), contrary
> to '-fopenmp'.
> 
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 
> 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: 
> Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; 
> Registergericht München, HRB 106955


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-02-28  2:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-26 19:52 [patch, libgfortran] Initailize some variable to get rid of nuisance warnings Jerry D
2023-02-26 20:59 ` Harald Anlauf
2023-02-26 20:59   ` Harald Anlauf
2023-02-27  2:53   ` Jerry D
2023-02-27  6:30     ` Thomas Koenig
2023-02-27  7:54     ` Tobias Burnus
2023-02-28  2:16       ` Jerry D

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).