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);
+}

Reply via email to