Moreover, LRA assignment does not refer to the assignment result of ira directly. In find_hard_regno_for, the value of hard_regno comes from ira_class_hard_regs[rclass][i] with least cost.
On Tue, Dec 09, 2014 at 06:14:29PM +0800, lin zuojian wrote: > Hi Kugan, > I have read these pdfs. My question is LRA will change the insns, so > why brother do the coloring so early. Changing the insns can > generates new pseudo registers, so they needs to re-assign. Is that > correct? > -- > Thanks Kugan > > On Tue, Dec 09, 2014 at 09:08:46PM +1100, Kugan wrote: > > On 09/12/14 20:37, lin zuojian wrote: > > > Hi, > > > I have read ira/lra code for a while, but still fails to understand > > > their relationship. The main question is why ira do color so early? > > > lra pass will do the assignment anyway. Sorry if I mess up coloring > > > and hard register assignment, but I think it's better to get job > > > done after lra elimiation, inheriation, ... > > > > > > IRA does the register allocation and LRA matches insn constraints. > > Therefore IRA has to do the coloring. LRA, in the process matching > > constraints may change some of these assignment. Please look at the > > following links for more info. > > > > https://ols.fedoraproject.org/GCC/Reprints-2007/makarov-reprint.pdf > > https://gcc.gnu.org/wiki/cauldron2012?action=AttachFile&do=get&target=Local_Register_Allocator_Project_Detail.pdf > > > > > > Thanks, > > Kugan > >