loadpre2.c: Avoid undefined behavior due to uninitialized variables.
authorRichard Biener <rguenther@suse.de>
Thu, 5 Nov 2015 08:43:46 +0000 (08:43 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 5 Nov 2015 08:43:46 +0000 (08:43 +0000)
2015-11-05  Richard Biener  <rguenther@suse.de>

* gcc.dg/tree-ssa/loadpre2.c: Avoid undefined behavior due to
uninitialized variables.
* gcc.dg/tree-ssa/loadpre21.c: Likewise.
* gcc.dg/tree-ssa/loadpre22.c: Likewise.
* gcc.dg/tree-ssa/loadpre23.c: Likewise.
* gcc.dg/tree-ssa/loadpre24.c: Likewise.
* gcc.dg/tree-ssa/loadpre25.c: Likewise.
* gcc.dg/tree-ssa/loadpre4.c: Likewise.
* gcc.dg/ipa/inlinehint-2.c: Likewise.
* gcc.dg/ipa/pure-const-2.c: Likewise.
* gcc.dg/tree-ssa/loop-1.c: Likewise.
* gcc.dg/tree-ssa/loop-23.c: Likewise.
* gcc.dg/tree-ssa/pr22051-2.c: Likewise.
* gcc.dg/tree-ssa/ssa-pre-3.c: Likewise.
* gcc.dg/tree-ssa/ssa-sccvn-3.c: Likewise.
* gcc.dg/vect/pr30858.c: Likewise.
* gcc.dg/vect/pr33866.c: Likewise.
* gcc.dg/vect/pr37027.c: Likewise.
* c-c++-common/ubsan/null-10.c: Likewise.
* gcc.target/i386/incoming-8.c: Likewise.

From-SVN: r229793

20 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/ubsan/null-10.c
gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
gcc/testsuite/gcc.dg/ipa/pure-const-2.c
gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c
gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c
gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c
gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c
gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c
gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c
gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c
gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
gcc/testsuite/gcc.dg/tree-ssa/loop-23.c
gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
gcc/testsuite/gcc.dg/vect/pr30858.c
gcc/testsuite/gcc.dg/vect/pr33866.c
gcc/testsuite/gcc.dg/vect/pr37027.c
gcc/testsuite/gcc.target/i386/incoming-8.c

index 1733e60e6919e2689779a9f9d3632a6868f6385c..98d481e77a5f9536354adf95242274ff3ac15e7d 100644 (file)
@@ -1,3 +1,26 @@
+2015-11-05  Richard Biener  <rguenther@suse.de>
+
+       * gcc.dg/tree-ssa/loadpre2.c: Avoid undefined behavior due to
+       uninitialized variables.
+       * gcc.dg/tree-ssa/loadpre21.c: Likewise.
+       * gcc.dg/tree-ssa/loadpre22.c: Likewise.
+       * gcc.dg/tree-ssa/loadpre23.c: Likewise.
+       * gcc.dg/tree-ssa/loadpre24.c: Likewise.
+       * gcc.dg/tree-ssa/loadpre25.c: Likewise.
+       * gcc.dg/tree-ssa/loadpre4.c: Likewise.
+       * gcc.dg/ipa/inlinehint-2.c: Likewise.
+       * gcc.dg/ipa/pure-const-2.c: Likewise.
+       * gcc.dg/tree-ssa/loop-1.c: Likewise.
+       * gcc.dg/tree-ssa/loop-23.c: Likewise.
+       * gcc.dg/tree-ssa/pr22051-2.c: Likewise.
+       * gcc.dg/tree-ssa/ssa-pre-3.c: Likewise.
+       * gcc.dg/tree-ssa/ssa-sccvn-3.c: Likewise.
+       * gcc.dg/vect/pr30858.c: Likewise.
+       * gcc.dg/vect/pr33866.c: Likewise.
+       * gcc.dg/vect/pr37027.c: Likewise.
+       * c-c++-common/ubsan/null-10.c: Likewise.
+       * gcc.target/i386/incoming-8.c: Likewise.
+
 2015-11-04  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gnat.dg/slice9.adb: New test.
index 2ff948565d52b40fa9455ee3eaefde8bc57f85a1..705e00d327d71f236aabc8099444e4b6b8cf69db 100644 (file)
@@ -2,10 +2,12 @@
 /* { dg-options "-fsanitize=null -w" } */
 /* { dg-shouldfail "ubsan" } */
 
+short x;
+
 int
 main (void)
 {
-  short *p = 0, *u;
+  short *p = 0, *u = &x;
   *(u + *p) = 23;
   return  0;
 }
index cfdcb24bcd5e5db40d3cdc8c2cfb3fbda788b38f..500100d38999cd3fbae4ca9455aab47e4fdfc41d 100644 (file)
@@ -5,7 +5,7 @@ int
 t(int s, void **p)
 {
   int i;
-  for (i;i<10000;i+=s)
+  for (i=0;i<10000;i+=s)
     p[i]=0;
 }
 int
index 51d779776bc7daf844be111b096447d4191eee64..564a59c20cb85d5747135e96b4791eb44dbd7522 100644 (file)
@@ -5,7 +5,7 @@ int i_am_pure(char *c, int n)
 {
   char *d=__builtin_alloca (n);
   int i;
-  int sum;
+  int sum = 0;
   for (i=0;i<n;i++)
     d[i] = c[i];
   for (i=0;i<n;i++)
index 7e699c9206812a66402ecb241935e2443258db1c..1ef048443980f1a1159499bb922df493672332b4 100644 (file)
@@ -2,16 +2,15 @@
 /* { dg-options "-O2 -fdump-tree-pre-stats" } */
 int main(int *a, int argc)
 {
-  int b;
   int i;
-  int d, e;
+  int e;
 
   /* Should be able to hoist this out of the loop.  */
   for (i = 0; i < argc; i++)
     {
       e = *a;
     }
-  return d + e;
+  return e;
 }
 
 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
index 3ee16c30fee4fe960a096d44ee28e624552e37d5..e2851913f98e083247f8a714cb4588e97124c00a 100644 (file)
@@ -3,16 +3,15 @@
 typedef int type[2];
 int main(type *a, int argc)
 {
-  int b;
   int i;
-  int d, e;
+  int e;
 
   /* Should be able to hoist this out of the loop.  */
   for (i = 0; i < argc; i++)
     {
       e = (*a)[0];
     }
-  return d + e;
+  return e;
 }
 
 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
index acd389bb239a0379f4b7d5617283437505536ca7..62809c3e0f25a42c8ad0009829080951af61bc25 100644 (file)
@@ -3,16 +3,15 @@
 typedef int type[2];
 int main(type *a, int argc)
 {
-  int b;
   int i;
-  int d, e;
+  int e;
 
   /* Should be able to hoist this out of the loop.  */
   for (i = 0; i < argc; i++)
     {
       e = (*a)[argc];
     }
-  return d + e;
+  return e;
 }
 
 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
index 1a62bc4bf853b64de33f5f6c15c7e74cbdd4221a..9fa073154150d008517560f1a9aafece31ccf817 100644 (file)
@@ -8,17 +8,16 @@ struct {
 
 int foo(int argc)
 {
-  int b;
   int c;
   int i;
-  int d, e;
+  int e;
 
   for (i = 0; i < argc; i++)
     {
       e = x.a;
       x.a = 9;
     }
-  return d + e;
+  return e;
 }
 
 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
index 5bf7b509572e410f1529b70bd505ab0368c9118e..bd7275f76e9ad42910bfc6c78dfcc90c16d9e71e 100644 (file)
@@ -5,17 +5,15 @@ int a;
 
 int foo(int argc)
 {
-  int b;
-  int c;
   int i;
-  int d, e;
+  int e;
 
   for (i = 0; i < argc; i++)
     {
       e = a;
       a = 9;
     }
-  return d + e;
+  return e;
 }
 
 /* We will move the load of a out of the loop.  */
index 9cdb003fa8d5defae7355ea85fcc13628320540b..8418c309616059bc343d5e986547644cebf0435e 100644 (file)
@@ -3,17 +3,15 @@
 struct X { int i; };
 int foo(struct X *a, int argc)
 {
-  int b;
-  int c;
   int i;
-  int d, e;
+  int e;
 
   for (i = 0; i < argc; i++)
     {
       e = a->i;
       a->i = 9;
     }
-  return d + e;
+  return e;
 }
 
 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
index 48630c8abbfbeac0d993147522ba56943f22e632..2ca7e393cdf3a31ffd34f844b6c559ab07a77ec2 100644 (file)
@@ -2,17 +2,15 @@
 /* { dg-options "-O2 -fdump-tree-pre-stats" } */
 int main(int *a, int argc)
 {
-  int b;
-  int c;
   int i;
-  int d, e;
+  int e;
 
   for (i = 0; i < argc; i++)
     {
       e = *a;
       *a = 9;
     }
-  return d + e;
+  return e;
 }
 
 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
index 9d18dd7efdc9d925826e4168cce229b5ab7cbcb1..0193c6e52fcd2188ceebe9963cd91a65c9ab3a9f 100644 (file)
@@ -24,7 +24,7 @@ int foo (int x);
 int xxx(void)
 {
   int x = 45;
-  int sum;
+  int sum = 0;
 
   while (x >>= 1)
     sum += foo (x) * 2;
index 3c884849c5f7a051177d0e267b62e43611098079..50ae1a8c1cf2486e5b11a8c9f8aaef911994603a 100644 (file)
@@ -7,7 +7,7 @@ int bla(int);
 int foo(void)
 {
   int i;
-  int sum;
+  int sum = 0;
 
   /* This loop used to appear to be too large for unrolling.  */
   for (i = 0; i < 4; i++)
index cae9a06323a87747a94a89bb65bebcab4e39a895..98114f3d422a6c75828ca0eae10fa2814e49a500 100644 (file)
@@ -1,14 +1,10 @@
 /* { dg-do compile }  */
 /* { dg-options "-O2 -fdump-tree-optimized -w" }  */
 
-
-
-
 void *arf ();
 int
-foo()
+foo(void (*q)(void))
 {
-  void (*q)(void);
   int r = q;
 
   if (r != 0)
index 0af5342a566c43d9de9d56951a8deb1c90fadc8c..ba2c8eaaa8dc3fd6e192b9eea7ef5c12082ec850 100644 (file)
@@ -1,8 +1,8 @@
 /* { dg-do compile } */ 
 /* { dg-options "-O2 -fdump-tree-pre-stats" } */
-unsigned foo1 (unsigned a, unsigned b)
+unsigned foo1 (unsigned a, unsigned b, unsigned j, unsigned k)
 {
-  unsigned i, j, k;
+  unsigned i;
   for (i = 0; i != a; i++)
     {
       j += 4*b;
index 4284d890520ed2ee5f86429dfc00adf97b3eb31e..9040ff856bcc88983e9eb78c7ce30c95a300f61b 100644 (file)
@@ -1,8 +1,8 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1" } */
+int *p;
 int main(int argc, char **argv)
 {
-  int *p;
   int result;
   *p = 2;
   if (argc)
@@ -11,4 +11,4 @@ int main(int argc, char **argv)
   return result;
 }
 /* We should eliminate result = *p by saying it has the value 2.  */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+/* { dg-final { scan-tree-dump "return 2;" "fre1"} } */
index 35a6a8dab36fa6ffa882ea2884d6c3c42242432a..cc92318d7dfd52d31e2b8038598017d5fd5eaed5 100644 (file)
@@ -4,7 +4,7 @@
 int
 foo (int ko)
 {
- int j,i;
+ int j,i = 0;
   for (j = 0; j < ko; j++)
    i += (i > 10) ? -5 : 7;
  return i;
index ddb1287660cf2a0f3f4ce13a62327b7fadbb396a..737b2e8db2e6833f32dedb23cb5523ebb7ef11b4 100644 (file)
@@ -18,7 +18,7 @@ void test_select_fill_hyper_simple (long *offset)
   fill_iter_info iter_info;
   int i, j;
   iter_info.coords = (long *) points;
-  for (i = 0, num_points = 0; j < (int) start[1]; j++, num_points++)
+  for (j = i = 0, num_points = 0; j < (int) start[1]; j++, num_points++)
   {
     points[num_points][0] = i + start[0];
     points[num_points][1] = j + start[1];
index 8c83f01bceb1410bc1e51a21e49b16233bf90999..ef6760ec9247d1b2fe8583c62a1d6ff0ff21e45b 100644 (file)
@@ -18,8 +18,8 @@ void
 foo (void)
 {
   int i;
-  int sum1;
-  int sum2;
+  int sum1 = 0;
+  int sum2 = 0;
 
   for (i = 0; i < 16; i++)
   {
index 61d9cb37d724fe1c03cc907820c11fe5bb7eddbe..a9912d1b1224d2d41afad3b2d1fc28fffd6b4309 100644 (file)
@@ -6,7 +6,7 @@ float
 foo (float f)
 {
   float array[128];
-  float x;
+  float x = 0.;
   int i;
   for (i = 0; i < sizeof(array) / sizeof(*array); i++)
     array[i] = f;