===================================================================
@@ -5461,7 +5461,10 @@ eliminate_dom_walker::eliminate_cleanup
if (is_gimple_assign (stmt))
{
gimple_assign_set_rhs_from_tree (&gsi, sprime);
- update_stmt (gsi_stmt (gsi));
+ stmt = gsi_stmt (gsi);
+ update_stmt (stmt);
+ if (maybe_clean_or_replace_eh_stmt (stmt, stmt))
+ bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index);
continue;
}
else
===================================================================
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-Wno-div-by-zero" } */
+
+void
+bl (int *be)
+{
+ int lo;
+ {
+ int **ny;
+
+ if (*be == 0)
+ {
+ int ***k8 = &ny;
+ int uj = (__INTPTR_TYPE__)&lo;
+
+ for (;;)
+ if (***k8 == 0)
+ {
+ uj = !!(1 / 0) ? !(lo = 0) : 0;
+ (void) uj;
+
+ if (*ny == 0)
+ for (;;)
+ if (***k8 == 0)
+ {
+ }
+
+ for (lo = 0; lo < 2; ++lo)
+ {
+ }
+ }
+ }
+ }
+}