diff options
author | Richard Biener <rguenther@suse.de> | 2016-09-19 06:54:10 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-09-19 06:54:10 +0000 |
commit | ed4fd957296b0633d21996a9c4cd5a5f3a2ee2ba (patch) | |
tree | 2d5ad4e14cb5cb424624ca7ddfe08378947bf76a /gcc/tree-ssa-pre.c | |
parent | cdf060f898adc6299288008f01a1f417d7409f4f (diff) | |
download | gcc-ed4fd957296b0633d21996a9c4cd5a5f3a2ee2ba.zip gcc-ed4fd957296b0633d21996a9c4cd5a5f3a2ee2ba.tar.gz gcc-ed4fd957296b0633d21996a9c4cd5a5f3a2ee2ba.tar.bz2 |
re PR tree-optimization/77514 (ICE in VN_INFO_GET, at tree-ssa-sccvn.c:406 w/ -O2 (and above))
2016-09-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/77514
* tree-ssa-pre.c (create_expression_by_pieces): Optimize
search for folded stmt.
From-SVN: r240226
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index d1fe72c..0c6f820 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -2881,13 +2881,16 @@ create_expression_by_pieces (basic_block block, pre_expr expr, } /* Likewise if we simplified to sth not queued for insertion. */ bool found = false; - gsi = gsi_start (forced_stmts); - for (; !gsi_end_p (gsi); gsi_next (&gsi)) + gsi = gsi_last (forced_stmts); + for (; !gsi_end_p (gsi); gsi_prev (&gsi)) { gimple *stmt = gsi_stmt (gsi); tree forcedname = gimple_get_lhs (stmt); if (forcedname == folded) - found = true; + { + found = true; + break; + } } if (! found) { |