Hi! Bootstrap failed with go enabled at least on i686-linux for the last day or so, some changes in libgo crypto apparently started triggering a recently introduced problem in replace_uses_by. fold_stmt isn't the only way a stmt can be changed by replace_uses_by, in the sha1.go case replace_exp changed *tmp_8[i_10] = something; which because of -fnon-call-exceptions was considered stmt_could_throw_p into *tmp_8[0] = something; which can't throw, but maybe_clean_or_replace_eh_stmt would be called only if fold_stmt returned non-zero. Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, committed to trunk as obvious.
2011-12-16 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/51576 * tree-cfg.c (replace_uses_by): Call maybe_clean_or_replace_eh_stmt even if fold_stmt didn't change anything. --- gcc/tree-cfg.c.jj 2011-12-15 08:06:54.000000000 +0100 +++ gcc/tree-cfg.c 2011-12-16 12:10:00.350503019 +0100 @@ -1625,10 +1625,9 @@ replace_uses_by (tree name, tree val) } if (fold_stmt (&gsi)) - { - stmt = gsi_stmt (gsi); - maybe_clean_or_replace_eh_stmt (orig_stmt, stmt); - } + stmt = gsi_stmt (gsi); + + maybe_clean_or_replace_eh_stmt (orig_stmt, stmt); update_stmt (stmt); } Jakub