summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-23 20:43:19 +0000
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-23 20:43:19 +0000
commite20420625fe3f6fcf2023df799c9a8f352415125 (patch)
tree743ab1743b387e51e3a6cb71120ba7081f7c3581
parenta32b9e9df59895c7130c19ae05af9715b599a725 (diff)
downloadgcc-e20420625fe3f6fcf2023df799c9a8f352415125.tar.gz
Fix clobber removal in parloops
2016-01-23 Tom de Vries <tom@codesourcery.com> PR tree-optimization/69426 * tree-parloops.c (eliminate_local_variables_stmt): Handle vdef of removed clobber. * gcc.dg/autopar/pr69426.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@232768 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/autopar/pr69426.c19
-rw-r--r--gcc/tree-parloops.c1
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 65b54331cc1..d11febfbc1a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-23 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/69426
+ * tree-parloops.c (eliminate_local_variables_stmt): Handle vdef of
+ removed clobber.
+
2016-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Backport from mainline
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9c7e797b8d1..909b2d5fbfa 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-23 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/69426
+ * gcc.dg/autopar/pr69426.c: New test.
+
2016-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Backport from mainline
diff --git a/gcc/testsuite/gcc.dg/autopar/pr69426.c b/gcc/testsuite/gcc.dg/autopar/pr69426.c
new file mode 100644
index 00000000000..e91421cefed
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/pr69426.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2" } */
+
+int iq;
+
+void
+mr(void)
+{
+ unsigned int i8;
+
+ for (i8 = 0; i8 != 1; i8 += 3) {
+ void *f0[] = { f0 };
+ int hv;
+
+ for (; hv < 1; ++hv)
+ iq = 0;
+ }
+ ++iq;
+}
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 62a6444e66b..c3929a1244a 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -741,6 +741,7 @@ eliminate_local_variables_stmt (edge entry, gimple_stmt_iterator *gsi,
}
else if (gimple_clobber_p (stmt))
{
+ unlink_stmt_vdef (stmt);
stmt = gimple_build_nop ();
gsi_replace (gsi, stmt, false);
dta.changed = true;