https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87402
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Caused by the fix for PR87263 where I reverted some "fixes" (you might call them workarounds) for earlier -O[1g] issues. This is now a testcase for the SSA_VAL (backedge_val) != backedge_val case I reverted here: @@ -4207,9 +4204,7 @@ visit_phi (gimple *phi, bool *inserted, && !seen_non_backedge && TREE_CODE (backedge_val) == SSA_NAME && sameval == backedge_val - && (SSA_NAME_IS_VIRTUAL_OPERAND (backedge_val) - || !SSA_VISITED (backedge_val) - || SSA_VAL (backedge_val) != backedge_val)) + && SSA_NAME_IS_VIRTUAL_OPERAND (backedge_val)) /* Note this just drops to VARYING without inserting the PHI into the hashes. */ result = PHI_RESULT (phi); ultimatively the question is whether we may actually use the SSA_VAL here. For this testcase we made the backedge executable as we're visiting along it compared to when we do that because we cannot trust its executable state. Of course we'd need to track this difference somehow... That said, reverting part of the above is going to work, but I'm fist re-testing disabling of pessimistic PHI backedge treatment (and hope we have a testcase that breaks - otherwise I'll likely wait for one there...).