PR testsuite/92829 - several -Wstringop-overflow test case failures on powerpc64
authorMartin Sebor <msebor@redhat.com>
Mon, 20 Jan 2020 13:53:33 +0000 (14:53 +0100)
committerMartin Sebor <msebor@redhat.com>
Mon, 20 Jan 2020 13:53:33 +0000 (14:53 +0100)
* g++.dg/warn/Wstringop-overflow-4.C: Adjust test to avoid failures
due to an aparrent VRP limtation.
* gcc.dg/Wstringop-overflow-25.c: Same.

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wstringop-overflow-4.C
gcc/testsuite/gcc.dg/Wstringop-overflow-25.c

index 67d5f2e9e28677e6d748f4da57c76f9dd9327180..452c16eb8c5ed7b4181a02800bb3dbc7b55e38cd 100644 (file)
@@ -1,3 +1,10 @@
+2020-01-20  Martin Sebor  <msebor@redhat.com>
+
+       PR testsuite/92829
+       * g++.dg/warn/Wstringop-overflow-4.C: Adjust test to avoid failures
+       due to an aparrent VRP limtation.
+       * gcc.dg/Wstringop-overflow-25.c: Same.
+
 2020-01-20  Nathan Sidwell  <nathan@acm.org>
 
        PR preprocessor/80005
index b6fe0289674b327bd4763af108a6c550c8ed3b80..121239ac1dbc7c3fd2ad38712de9387d28ba8976 100644 (file)
@@ -98,13 +98,19 @@ void test_strcpy_new_char_array (size_t n)
 
 #ifdef __INT16_TYPE__
 
+// Hack around PR 92829.
+#define XUR(min, max) \
+  (++idx, (vals[idx] < min || max < vals[idx] ? min : vals[idx]))
+
 typedef __INT16_TYPE__ int16_t;
 
-void test_strcpy_new_int16_t (size_t n)
+void test_strcpy_new_int16_t (size_t n, const size_t vals[])
 {
-  size_t r_0_1 = UR (0, 1);
-  size_t r_1_2 = UR (1, 2);
-  size_t r_2_3 = UR (2, 3);
+  size_t idx = 0;
+
+  size_t r_0_1 = XUR (0, 1);
+  size_t r_1_2 = XUR (1, 2);
+  size_t r_2_3 = XUR (2, 3);
 
   T (S (0), new int16_t[r_0_1]);
   T (S (1), new int16_t[r_0_1]);
@@ -122,7 +128,7 @@ void test_strcpy_new_int16_t (size_t n)
   T (S (6), new int16_t[r_2_3]);      // { dg-warning "\\\[-Wstringop-overflow" }
   T (S (9), new int16_t[r_2_3]);      // { dg-warning "\\\[-Wstringop-overflow" }
 
-  size_t r_2_smax = UR (2, SIZE_MAX);
+  size_t r_2_smax = XUR (2, SIZE_MAX);
   T (S (0), new int16_t[r_2_smax]);
   T (S (1), new int16_t[r_2_smax]);
   T (S (2), new int16_t[r_2_smax]);
index 1b38dfe9ae4abb3253f01ecc007ab1f94f06f6d8..01807207acc6cdd565cb624db9c69e3627bcf9d4 100644 (file)
@@ -290,11 +290,17 @@ NOIPA void test_strcpy_alloc2_4 (void)
     sink (vla);                                        \
   } while (0)
 
-NOIPA void test_strcpy_vla (void)
+// Hack around PR 92829.
+#define XUR(min, max) \
+  (++idx, (vals[idx] < min || max < vals[idx] ? min : vals[idx]))
+
+NOIPA void test_strcpy_vla (const size_t vals[])
 {
-  size_t r_0_1 = UR (0, 1);
-  size_t r_1_2 = UR (1, 2);
-  size_t r_2_3 = UR (2, 3);
+  size_t idx = 0;
+
+  size_t r_0_1 = XUR (0, 1);
+  size_t r_1_2 = XUR (1, 2);
+  size_t r_2_3 = XUR (2, 3);
 
   T (char, S (0), r_0_1);
   T (char, S (1), r_0_1);       // { dg-warning "\\\[-Wstringop-overflow" }