I'm debugging a problem with a custom pass and I was surprised to
discover that LiveIntervalAnalysis depends on PHIElimination. Why is
that so? Intervals could be useful for all sorts of things beyond
register allocation.

Just curious. Is there something about the design of LiveIntervals that
it needs the out-of-SSA conversion?


The LiveIntervals analysis currently requires the MIs to be in SSA form + whatever specific transforms 2-addr and phi-elim do to the instructions and LiveVariables. There are no attempts to make it work anywhere else in the pipeline.

For example, it doesn't understand PHI instructions.

I would like for LiveIntervals to be independent of LiveVariables and any other passes.