re PR tree-optimization/47060 (ICE: SIGSEGV in reduction_phi (tree-parloops.c:212...
authorJakub Jelinek <jakub@redhat.com>
Thu, 30 Dec 2010 08:24:58 +0000 (09:24 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 30 Dec 2010 08:24:58 +0000 (09:24 +0100)
PR tree-optimization/47060
* tree-parloops.c (reduction_phi): Return NULL if PHI is NULL.

* gcc.dg/autopar/pr47060.c: New test.

From-SVN: r168336

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/autopar/pr47060.c [new file with mode: 0644]
gcc/tree-parloops.c

index 4f29072a00da05d04e2cf670e401cb3e9a42f111..067ed753a8289906af5cf9fdc9bd8544f8d9410a 100644 (file)
@@ -1,3 +1,8 @@
+2010-12-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/47060
+       * tree-parloops.c (reduction_phi): Return NULL if PHI is NULL.
+
 2010-12-29  Paul Koning  <ni1d@arrl.net>
 
        * config/pdp11/pdp11-protos.h (pdp11_asm_output_var): Declare.
index a364a4e64ff144e8c6e588b53e18cb51cf3ea6df..43b5afb6c3984437460522d216ac1675dd82c159 100644 (file)
@@ -1,3 +1,8 @@
+2010-12-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/47060
+       * gcc.dg/autopar/pr47060.c: New test.
+
 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        * objc.dg/enhanced-proto-2.m: Updated.
diff --git a/gcc/testsuite/gcc.dg/autopar/pr47060.c b/gcc/testsuite/gcc.dg/autopar/pr47060.c
new file mode 100644 (file)
index 0000000..e8cdfd6
--- /dev/null
@@ -0,0 +1,21 @@
+/* PR tree-optimization/47060 */
+/* { dg-do compile } */
+/* { dg-options "-O -ffast-math -ftree-parallelize-loops=2 -fno-tree-dce" } */
+
+struct S
+{
+  int n;
+  float *a;
+};
+
+float
+foo (struct S *b)
+{
+  float c, d;
+  int j;
+  for (j = 0; j < b->n; j++)
+    d += b->a[j];
+  for (j = 0; j < b->n; j++)
+    c += b->a[j];
+  return d;
+}
index 9ece8879e2ef26929ca528a793fb8adccd12fc0e..96759cbfe89771fb7d057c1083d266ac6730fcfa 100644 (file)
@@ -201,7 +201,7 @@ reduction_phi (htab_t reduction_list, gimple phi)
 {
   struct reduction_info tmpred, *red;
 
-  if (htab_elements (reduction_list) == 0)
+  if (htab_elements (reduction_list) == 0 || phi == NULL)
     return NULL;
 
   tmpred.reduc_phi = phi;