The following fixes PR78051. Bootstrap / regtest pending on x86_64-unknown-linux-gnu.
Richard. 2016-10-20 Richard Biener <rguent...@suse.de> PR tree-optimization/78051 * tree-vrp.c (evrp_dom_walker::before_dom_children): Update stmt and mark replaced if folding did something. * g++.dg/torture/pr78051.C: New testcase. Index: gcc/tree-vrp.c =================================================================== --- gcc/tree-vrp.c (revision 241363) +++ gcc/tree-vrp.c (working copy) @@ -10850,7 +10850,11 @@ evrp_dom_walker::before_dom_children (ba = replace_uses_in (stmt, op_with_constant_singleton_value_range); if (fold_stmt (&gsi, follow_single_use_edges) || did_replace) - update_stmt (gsi_stmt (gsi)); + { + stmt = gsi_stmt (gsi); + update_stmt (stmt); + did_replace = true; + } if (did_replace) { Index: gcc/testsuite/g++.dg/torture/pr78051.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr78051.C (revision 0) +++ gcc/testsuite/g++.dg/torture/pr78051.C (working copy) @@ -0,0 +1,9 @@ +extern "C" { + typedef int FILE; + int *stdout; + int fputs(const char *, FILE *); +} +void print_packet() { + const char *color[]{"", "", ""}; + fputs(color[2], stdout); +}