------- Comment #8 from rguenth at gcc dot gnu dot org 2010-03-21 23:05 ------- (In reply to comment #7) > The problem is that copyprop does this change: > > @@ -25,7 +25,7 @@ > <bb 12>: > # .MEM_16 = PHI <.MEM_18(10), .MEM_20(11)> > # s_66 = PHI <s_1(10), s_1(11)> > - s_13 = s_66; > + s_13 = s_1; > goto <bb 16> (got_it); > > } > > then verify_loop_closed_ssa () complains about the fact that s_1 is > defined in loop_1 and used outside loop_1 in a non close-phi node.
Ah, copyprop avoids _single_ arg PHIs because that may break loop-closed SSA form. Why does loop closed SSA form suddenly have double-arg loop-closed PHI nodes? Indeed Sebastians patch is a non-suitable hammer. Copyprop already tries to avoid breaking loop-closed SSA form. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43464