<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Mar 26, 2011, at 1:04 PM, Borja Ferrer wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hello Jakob, thanks for the reply. The three regclasses involved here are all subsets from each other and aren't disjoint. These are the basic descriptions of the regclasses involved to show what i mean:<br><br>DREGS: R31R30, R29R28 down to R1R0         (16 regs)<br>
DLDREGS: R31R30, R29R28 down to R17R16  (8 regs)<br>PTRREGS: R31R30, R29R28, R27R26             (3 regs)<br><br>All classes intersect each other giving as a result the smaller class: DREGSxDLDREGS=DLDREGS / DLDREGSxPTRREGS=PTRREGS, etc. That's why i think the coalescer should work since the regclasses overlap completely.<font class="Apple-style-span" color="#000000"><font class="Apple-style-span" color="#144FAE"><br></font></font></blockquote><br></div><div>Cross class coalescing also has some heuristics to prevent it from creating very small register classes. It is possible that it doesn't want to use PTRREGS because it only has 3 registers.</div><div><br></div><div>You can look at the output of -debug-only=regcoalescing to see what is going on.</div><div><br></div><div>/jakob</div><div><br></div></body></html>