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.