https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111397
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Last reconfirmed| |2023-09-13 Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > Looks loop copy header change which allowed the warning not to happen. > > The warning is about the argument of test_setjmpex. Because GCC does not > realize __builtin_frame_address cannot jump to the test_setjmpex ... > > In the case of GCC 12-13, the copy of the loop header happens during > thread-full rather than earlier and inserts: > _4(ab) = _11(D); > > Which is what is warned about. > _11(D) does not get proped into the phi ... We can't propagate because /* Similarly if DEST flows in from an abnormal edge then the copy cannot be propagated. If we know we do not propagate into a PHI argument this does not apply. */ else if (!dest_not_phi_arg_p && TREE_CODE (dest) == SSA_NAME && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (dest)) return false; that's still not fine-grained enough - the case we cannot propagate is when we propagate into a PHI argument for an abnormal edge. The diagnostic doesn't happen on trunk, I still have a patch doing the propagation.