https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84646
--- Comment #5 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- (In reply to Richard Biener from comment #4) > It's > > edge > back_threader::maybe_register_path (back_threader_profitability &profit) > { > edge taken_edge = find_taken_edge (m_path); > > if (taken_edge && taken_edge != UNREACHABLE_EDGE) > { > if (m_visited_bbs.contains (taken_edge->dest)) > { > // Avoid circular paths by indicating there is nothing to > // see in this direction. > taken_edge = UNREACHABLE_EDGE; > > not sure why though? If we remove the above we get There was a test we were failing because we were threading ircular paths, but you know more about this than me ;-). So if there are no regressions, feel free to nuke it.