https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104038
--- Comment #8 from Andrew Macleod <amacleod at redhat dot com> ---
The issue is transitive relations are being registered in an unbounded way.
SymCount_369 = SymCount_368 + 1;
SymCount_370 = SymCount_369 + 1;
SymCount_371 = SymCount_370 + 1;


_370 > _369, and _369 is > _368, so it registers a transitive relation between
_370 > _368
Then we register _371 > 370 and transitive relations_371 > 369 as well as _371
> 368

This cascades as the chain gets longer and would be quadratic in nature.
This is then compounded by the currently linear nature of looking up a relation
within the current basic block.

On monday, I will introduce a capping heuristic to transitivity and/or limiting
the number of relations we can add to a block, preventing either situation from
being an issue going forward.

Reply via email to