A register unit may be allocatable and non-reserved but some of the
register(tuples) built with it are reserved. We still need to calculate
liveness in this case.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
So we don't really have a concept of reserving register units, we just reserve registers; This patch currenly considers a register unit as reserved if all the root registers are reserved. This turned out to be a bad idea for the X86 32bit mode which reserves BIL, SIL, ... but of course still wants to use the 16+32bit versions of those register.
So I tried changing this to a register unit is considered reserved if the roots and all their super registers are reserved. This fixes all X86 cases but now breaks a number of tests on PowerPC and Hexagon (fun times).
Indeed its fixed now before I even started investigating. Woohoo, thanks that is cool!
(I started with PowerPC which looks like it needs a similar fix as Hexagon, but got interrupted by a meeting)