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 <jvdeli...@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].


Reply via email to