diff options
author | Richard Biener <rguenther@suse.de> | 2017-10-20 11:21:11 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-10-20 11:21:11 +0000 |
commit | 1031b5772a3f2daee0bf01d7d155955833d05c1b (patch) | |
tree | 9ee9664e03a149adb59267aba377cdaf9dd3e40c /gcc/tree-if-conv.c | |
parent | c46bd47200d748a9b01fc5f669b64e12ed56b2f5 (diff) | |
download | gcc-1031b5772a3f2daee0bf01d7d155955833d05c1b.zip gcc-1031b5772a3f2daee0bf01d7d155955833d05c1b.tar.gz gcc-1031b5772a3f2daee0bf01d7d155955833d05c1b.tar.bz2 |
re PR tree-optimization/82603 (ICE in ifcvt_local_dce w/ -O2 -ftree-loop-vectorize)
2017-10-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/82603
* tree-if-conv.c (predicate_mem_writes): Make sure to only
remove false predicated stores.
* gcc.dg/torture/pr82603.c: New testcase.
From-SVN: r253933
Diffstat (limited to 'gcc/tree-if-conv.c')
-rw-r--r-- | gcc/tree-if-conv.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index e2fce3c..a1803ff 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -2214,7 +2214,8 @@ predicate_mem_writes (loop_p loop) { if (!gimple_assign_single_p (stmt = gsi_stmt (gsi))) ; - else if (is_false_predicate (cond)) + else if (is_false_predicate (cond) + && gimple_vdef (stmt)) { unlink_stmt_vdef (stmt); gsi_remove (&gsi, true); |