re PR tree-optimization/87117 (ICE in eliminate_dom_walker::eliminate_cleanup(bool...
authorRichard Biener <rguenther@suse.de>
Tue, 28 Aug 2018 10:15:54 +0000 (10:15 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 28 Aug 2018 10:15:54 +0000 (10:15 +0000)
2018-08-28  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87117
* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup):
Handle removed stmt without LHS (GIMPLE_NOP).

From-SVN: r263912

gcc/ChangeLog
gcc/tree-ssa-sccvn.c

index 694fdf2..a357b4b 100644 (file)
@@ -1,6 +1,12 @@
 2018-08-28  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/87117
+       * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup):
+       Handle removed stmt without LHS (GIMPLE_NOP).
+
+2018-08-28  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/87117
        * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude
        void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P.
 
index 381fc8d..9277de0 100644 (file)
@@ -5425,31 +5425,28 @@ eliminate_dom_walker::eliminate_cleanup (bool region_p)
                  do_release_defs = false;
                }
            }
-         else
-           {
-             tree lhs = gimple_get_lhs (stmt);
-             if (TREE_CODE (lhs) == SSA_NAME
-                 && !has_zero_uses (lhs))
-               {
-                 if (dump_file && (dump_flags & TDF_DETAILS))
-                   fprintf (dump_file, "Keeping eliminated stmt live "
-                            "as copy because of out-of-region uses\n");
-                 tree sprime = eliminate_avail (gimple_bb (stmt), lhs);
-                 gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
-                 if (is_gimple_assign (stmt))
-                   {
-                     gimple_assign_set_rhs_from_tree (&gsi, sprime);
-                     update_stmt (gsi_stmt (gsi));
-                     continue;
-                   }
-                 else
-                   {
-                     gimple *copy = gimple_build_assign (lhs, sprime);
-                     gsi_insert_before (&gsi, copy, GSI_SAME_STMT);
-                     do_release_defs = false;
-                   }
-               }
-           }
+         else if (tree lhs = gimple_get_lhs (stmt))
+           if (TREE_CODE (lhs) == SSA_NAME
+               && !has_zero_uses (lhs))
+             {
+               if (dump_file && (dump_flags & TDF_DETAILS))
+                 fprintf (dump_file, "Keeping eliminated stmt live "
+                          "as copy because of out-of-region uses\n");
+               tree sprime = eliminate_avail (gimple_bb (stmt), lhs);
+               gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+               if (is_gimple_assign (stmt))
+                 {
+                   gimple_assign_set_rhs_from_tree (&gsi, sprime);
+                   update_stmt (gsi_stmt (gsi));
+                   continue;
+                 }
+               else
+                 {
+                   gimple *copy = gimple_build_assign (lhs, sprime);
+                   gsi_insert_before (&gsi, copy, GSI_SAME_STMT);
+                   do_release_defs = false;
+                 }
+             }
        }
 
       if (dump_file && (dump_flags & TDF_DETAILS))