diff options
author | Richard Biener <rguenther@suse.de> | 2016-05-20 09:09:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-05-20 09:09:28 +0000 |
commit | eb066284cb8cdf7f46f455c3e975cf1b349a0487 (patch) | |
tree | dd7c8a1e1fbcd874441ae5c7e87bc6a815ed0dd0 | |
parent | 58f10249a8182b1b038747113c2ba217d7bd4379 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr71185.c | 13 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-prefetch.c | 3 |
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); |