aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-05-20 09:09:28 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-05-20 09:09:28 +0000
commiteb066284cb8cdf7f46f455c3e975cf1b349a0487 (patch)
treedd7c8a1e1fbcd874441ae5c7e87bc6a815ed0dd0
parent58f10249a8182b1b038747113c2ba217d7bd4379 (diff)
downloadgcc-eb066284cb8cdf7f46f455c3e975cf1b349a0487.zip
gcc-eb066284cb8cdf7f46f455c3e975cf1b349a0487.tar.gz
gcc-eb066284cb8cdf7f46f455c3e975cf1b349a0487.tar.bz2
re PR target/71185 (ice in gimplify_modify_expr, at gimplify.c:4873)
2016-05-20 Richard Biener <rguenther@suse.de> PR tree-optimization/71185 * tree-ssa-loop-prefetch.c (gather_memory_references): Drop register operations. * gcc.dg/tree-ssa/pr71185.c: New testcase. From-SVN: r236499
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr71185.c13
-rw-r--r--gcc/tree-ssa-loop-prefetch.c3
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8471e8a..83a6f3c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2016-05-20 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/71185
+ * tree-ssa-loop-prefetch.c (gather_memory_references): Drop
+ register operations.
+
+2016-05-20 Richard Biener <rguenther@suse.de>
+
* tree-if-conv.c (add_bb_predicate_gimplified_stmts): Use
gimple_seq_add_seq_without_update.
(release_bb_predicate): Assert we have no operands to free.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0c2f4bc..87588f0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2016-05-20 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/71185
+ * gcc.dg/tree-ssa/pr71185.c: New testcase.
+
+2016-05-20 Richard Biener <rguenther@suse.de>
+
* gcc.dg/tree-ssa/ifc-cd.c: Adjust.
2016-05-19 Marek Polacek <polacek@redhat.com>
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr71185.c b/gcc/testsuite/gcc.dg/tree-ssa/pr71185.c
new file mode 100644
index 0000000..c2e246f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr71185.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+/* { dg-options "-O3 -march=barcelona" { target x86_64-*-* i?86-*-* } } */
+
+union U { struct S { int l; int m; } p; long long a; } b;
+int a, c;
+
+void
+foo ()
+{
+ for (; b.p.m; b.a += c)
+ a = b.p.l / 65536.0 * 65536.0;
+}
diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c
index 49fd597..fb8c476 100644
--- a/gcc/tree-ssa-loop-prefetch.c
+++ b/gcc/tree-ssa-loop-prefetch.c
@@ -631,6 +631,9 @@ gather_memory_references (struct loop *loop, bool *no_other_refs, unsigned *ref_
continue;
}
+ if (! gimple_vuse (stmt))
+ continue;
+
lhs = gimple_assign_lhs (stmt);
rhs = gimple_assign_rhs1 (stmt);