===================================================================
@@ -3006,7 +3006,12 @@ eliminate_degenerate_phis (void)
}
if (cfg_altered)
- free_dominance_info (CDI_DOMINATORS);
+ {
+ free_dominance_info (CDI_DOMINATORS);
+ /* If we changed the CFG schedule loops for fixup by cfgcleanup. */
+ if (current_loops)
+ loops_state_set (LOOPS_NEED_FIXUP);
+ }
/* Propagation of const and copies may make some EH edges dead. Purge
such edges from the CFG as needed. */
===================================================================
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+
+unsigned a, b, c;
+
+void f(void)
+{
+ for(; a; a++)
+ {
+ long *p1 = (long *)&b;
+
+ if(*p1)
+ return;
+
+ if(b && (*p1 = b) || c && ++*p1)
+ {
+ unsigned *p2 = &b;
+
+ for(*p2 = 0; *p2 < 1;)
+ for(; b; b++);
+ }
+ }
+}