re PR libfortran/79956 (many new -Wmaybe-uninitialized warnings with bootstrap-O3)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 15 Mar 2017 07:45:39 +0000 (07:45 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 15 Mar 2017 07:45:39 +0000 (07:45 +0000)
2017-03-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/79956
* libgfortran.h (GFC_ASSERT):  New macro.
* m4/reshape.m4 (reshape_'rtype_ccode`):  Use GFC_ASSERT
to specify that sdim > 0 and rdim > 0.
* intrinsic/reshape_generic.c (reshape_internal):  Likweise.
* generated/reshape_c10.c: Regenerated.
* generated/reshape_c16.c: Regenerated.
* generated/reshape_c4.c: Regenerated.
* generated/reshape_c8.c: Regenerated.
* generated/reshape_i16.c: Regenerated.
* generated/reshape_i4.c: Regenerated.
* generated/reshape_i8.c: Regenerated.
* generated/reshape_r10.c: Regenerated.
* generated/reshape_r16.c: Regenerated.
* generated/reshape_r4.c: Regenerated.
* generated/reshape_r8.c: Regenerated.

From-SVN: r246153

15 files changed:
libgfortran/ChangeLog
libgfortran/generated/reshape_c10.c
libgfortran/generated/reshape_c16.c
libgfortran/generated/reshape_c4.c
libgfortran/generated/reshape_c8.c
libgfortran/generated/reshape_i16.c
libgfortran/generated/reshape_i4.c
libgfortran/generated/reshape_i8.c
libgfortran/generated/reshape_r10.c
libgfortran/generated/reshape_r16.c
libgfortran/generated/reshape_r4.c
libgfortran/generated/reshape_r8.c
libgfortran/intrinsics/reshape_generic.c
libgfortran/libgfortran.h
libgfortran/m4/reshape.m4

index c16b6788b142d9f8e31569e30f3a2f671a2ac0e1..e6703700c4b35f3cc95e6d999549b2e123738a10 100644 (file)
@@ -1,3 +1,22 @@
+2017-03-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR libfortran/79956
+       * libgfortran.h (GFC_ASSERT):  New macro.
+       * m4/reshape.m4 (reshape_'rtype_ccode`):  Use GFC_ASSERT
+       to specify that sdim > 0 and rdim > 0.
+       * intrinsic/reshape_generic.c (reshape_internal):  Likweise.
+       * generated/reshape_c10.c: Regenerated.
+       * generated/reshape_c16.c: Regenerated.
+       * generated/reshape_c4.c: Regenerated.
+       * generated/reshape_c8.c: Regenerated.
+       * generated/reshape_i16.c: Regenerated.
+       * generated/reshape_i4.c: Regenerated.
+       * generated/reshape_i8.c: Regenerated.
+       * generated/reshape_r10.c: Regenerated.
+       * generated/reshape_r16.c: Regenerated.
+       * generated/reshape_r4.c: Regenerated.
+       * generated/reshape_r8.c: Regenerated.
+
 2017-03-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/78854
index 00c64aeb746ff80802f0e9038b29575bc045b450..af45e960ee7fae71e84fe1ade12eae4bcc306ab4 100644 (file)
@@ -78,6 +78,10 @@ reshape_c10 (gfc_array_c10 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_c10 (gfc_array_c10 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index 4d90ce4a6fd7e77af493f0449520cb6919507fbd..977a53dbe475f1e8fd083692f666e92d6112f0a8 100644 (file)
@@ -78,6 +78,10 @@ reshape_c16 (gfc_array_c16 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_c16 (gfc_array_c16 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index c69696881b4ea1e3b81bb95b651ddc60fa50c6f0..fd94689a4c0b7d393820e70f0f5328f9a574af64 100644 (file)
@@ -78,6 +78,10 @@ reshape_c4 (gfc_array_c4 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_c4 (gfc_array_c4 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index e7d9f9dbb1db84405c4df2c7ac3d70c4f74103af..6377049397b002e5527ce69da9a77ef908c84728 100644 (file)
@@ -78,6 +78,10 @@ reshape_c8 (gfc_array_c8 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_c8 (gfc_array_c8 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index bb5eb6b5506b0b8ac3a330f5299b6ab270805bb3..65576a31704b118f5c6126650b72df97188ed0d8 100644 (file)
@@ -78,6 +78,10 @@ reshape_16 (gfc_array_i16 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_16 (gfc_array_i16 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index 597b0cb70d2888615e7c0466d1fb0c393112dfc5..d07b3a9c2d108a254794734a01a41b350dd02fa5 100644 (file)
@@ -78,6 +78,10 @@ reshape_4 (gfc_array_i4 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_4 (gfc_array_i4 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index 53e35d2c529831cd71e0cdada11f433466f798c0..f48728d17be7ecc9ea30c9d09ed09d8db4098e8b 100644 (file)
@@ -78,6 +78,10 @@ reshape_8 (gfc_array_i8 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_8 (gfc_array_i8 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index 923174dd4e21ef879ad092011b595093111fc0be..a5722d4244f69562414fb5512d857c6cb9d22a07 100644 (file)
@@ -78,6 +78,10 @@ reshape_r10 (gfc_array_r10 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_r10 (gfc_array_r10 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index 136d4f69b7edbe7bf782d2745e8874f064c82e50..c56b8717a839c973455e6d32abedc8a1bcc239aa 100644 (file)
@@ -78,6 +78,10 @@ reshape_r16 (gfc_array_r16 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_r16 (gfc_array_r16 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index b73a96816f2b83890432d7b6242f8e9d02b4f3ea..889813c07ece69594551673793a69fa06ac98f77 100644 (file)
@@ -78,6 +78,10 @@ reshape_r4 (gfc_array_r4 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_r4 (gfc_array_r4 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index d35a8c92e3600284994324886c522cbcbfb8ef77..279f89dcf2cdcea627d3cc876cb6763193b80666 100644 (file)
@@ -78,6 +78,10 @@ reshape_r8 (gfc_array_r8 * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -232,6 +236,11 @@ reshape_r8 (gfc_array_r8 * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index 43a822f87ae7ee5d633878915c126d33a5310000..09b0c36169bc656e2b54e40dc8f3509470220e54 100644 (file)
@@ -66,6 +66,10 @@ reshape_internal (parray *ret, parray *source, shape_type *shape,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+     avoids a warning.  */
+  GFC_ASSERT (rdim > 0);
+  
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -158,6 +162,10 @@ reshape_internal (parray *ret, parray *source, shape_type *shape,
 
       source_extent = 1;
       sdim = GFC_DESCRIPTOR_RANK (source);
+      /* sdim is always > 0; this lets the compiler optimize more and
+         avoids a warning.  */
+      GFC_ASSERT(sdim>0);
+
       for (n = 0; n < sdim; n++)
        {
          index_type se;
@@ -219,6 +227,10 @@ reshape_internal (parray *ret, parray *source, shape_type *shape,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+  /* sdim is always > 0; this lets the compiler optimize more and
+     avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)
index cfe04760fe500e3ade38664619af2fcc56dd16db..cfa4fcf0edc4fcaa73ea9788fe79d12117f4cdaf 100644 (file)
@@ -111,6 +111,11 @@ typedef off_t gfc_offset;
 #define likely(x)       __builtin_expect(!!(x), 1)
 #define unlikely(x)     __builtin_expect(!!(x), 0)
 
+/* This macro can be used to annotate conditions which we know to
+   be true, so that the compiler can optimize based on the condition.  */
+
+#define GFC_ASSERT(EXPR)                                                \
+  ((void)(__builtin_expect (!(EXPR), 0) ? __builtin_unreachable (), 0 : 0))
 
 /* Make sure we have ptrdiff_t. */
 #ifndef HAVE_PTRDIFF_T
index 787844ec42de4d2be1c96177692be1a9f301c6d8..5ad1f13615319cec50fd077d7780c0c3d27e3fef 100644 (file)
@@ -82,6 +82,10 @@ reshape_'rtype_ccode` ('rtype` * const restrict ret,
   index_type shape_data[GFC_MAX_DIMENSIONS];
 
   rdim = GFC_DESCRIPTOR_EXTENT(shape,0);
+  /* rdim is always > 0; this lets the compiler optimize more and
+   avoids a potential warning.  */
+  GFC_ASSERT(sdim>0);
+
   if (rdim != GFC_DESCRIPTOR_RANK(ret))
     runtime_error("rank of return array incorrect in RESHAPE intrinsic");
 
@@ -236,6 +240,11 @@ reshape_'rtype_ccode` ('rtype` * const restrict ret,
     }
 
   sdim = GFC_DESCRIPTOR_RANK (source);
+
+  /* sdim is always > 0; this lets the compiler optimize more and
+   avoids a warning.  */
+  GFC_ASSERT(sdim>0);
+
   ssize = 1;
   sempty = 0;
   for (n = 0; n < sdim; n++)