re PR tree-optimization/55964 (Segmentation fault with -O -ftree-loop-distribution...
authorRichard Biener <rguenther@suse.de>
Wed, 3 Apr 2013 10:36:49 +0000 (10:36 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 3 Apr 2013 10:36:49 +0000 (10:36 +0000)
2013-04-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/55964
* gcc.dg/torture/pr55964-2.c: New testcase.

From-SVN: r197403

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr55964-2.c [new file with mode: 0644]

index 71ae751d95a282eca82d2c7caab4747af33e3d7f..b21cba409f2beb22a8adfe0657bf82afb08588df 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-03  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/55964
+       * gcc.dg/torture/pr55964-2.c: New testcase.
+
 2013-04-03  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/56501
diff --git a/gcc/testsuite/gcc.dg/torture/pr55964-2.c b/gcc/testsuite/gcc.dg/torture/pr55964-2.c
new file mode 100644 (file)
index 0000000..a3bd09d
--- /dev/null
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-ftree-loop-distribution -funswitch-loops" } */
+
+struct test_struct {
+    int a, b[10], c[10], d[10];
+};
+
+extern struct test_struct* new_struct;
+
+void testfunc(struct test_struct* old_struct)
+{
+  int i;
+  for (i = 0; i < 10; ++i)
+    {
+      new_struct->b[i] = old_struct ? old_struct->b[i] : -1;
+      new_struct->c[i] = old_struct ? old_struct->c[i] : 0;
+      new_struct->d[i] = old_struct ? old_struct->d[i] : 0;
+    }
+  if (old_struct)
+    old_struct->a++;
+}