https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126110
--- Comment #5 from Drea Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Drea Pinski from comment #4)
> bisect to r16-5324-gbeba09b5c5a2f4 .
So it is the change in phi_analyzer::process_phi:
From:
if (phi_count < 2)
return;
to:
if (phi_count < 1)
return;
But phi_count is initialized to 1.
So phi_count is never `< 1`.
But that is not the issue.
The issue is we have:
# set_6 = PHI <insn_9(D)(2), elt_10(D)(3)>
_5 = set_6 == 0B;
_11 = (int) _5;
<bb 5> [local count: 1073741824]:
# _7 = PHI <0(3), _11(4)>
we call `query.range_on_edge` on _11 here which means caching the fact that
set_6 is varying.
I wonder if we can process these in a better order.
Like for an example only process phis for loop headers.
This won't fix the issue overall though. Because you could have a similar
pattern feeding into a phi for the loop header.
Anyways (maybe) over to Andrew for now.
Is there a way to clear the ranger cache after phi_analyzer?