Reimplement coalescer following the Budimlic paper.

The old coalescing algorithm had some algorithmic complexity issues when
dealing with large virtual registers. Reimplement to use a proper
union-find algorithm so we only need one pass through the dominator
forests for virtual registers that are interference free.

Virtual registers that do have interference are split and new registers
built.

This pass is about twice as fast as the old one when dealing with
complex virtual registers.
This commit is contained in:
Jakob Stoklund Olesen
2018-01-09 10:33:02 -08:00
parent 16ac4f65b3
commit d1f236b00a
4 changed files with 604 additions and 485 deletions

File diff suppressed because it is too large Load Diff