On Thu, Oct 4, 2012 at 7:07 PM, Steven Bosscher <stevenb....@gmail.com> wrote: > On Thu, Oct 4, 2012 at 5:37 PM, Vladimir Makarov <vmaka...@redhat.com> wrote: >> The only issue now is PR54146 compilation time for IRA+LRA although it >> was improved significantly. I will continue work on PR54146. But now I >> am going to focus on proposals from reviews. > > Right, there still are opportunities to improve things. > > (The real solution may be to stop SRA from creating so many > simultaneously live pseudos in the first place...) > >> + lra_simple_p >> + = (ira_use_lra_p && max_reg_num () >= (1 << 26) / last_basic_block); > > I think you should use n_basic_blocks here instead of > last_basic_block, in case this runs without compacting the cfg first > (n_basic_blocks is the real number of basic blocks in the cfg, > last_basic_block is the highest index, so last_basic_block >= > n_basic_blocks).
I also noticed that switching to IRA_REGION_ONE improves things when we have a large number of loops (profile points to some loop code in IRA). Note that the magic number above should be a new --param, and once we have a diagnostic flag that shows whenever we back off like this it should notify the user of that fact (and the params we have overflown) - this just reminded me of that idea from somebody else ;) > Thanks for working on this! Indeed ;) It, btw, also applies to IRA + reload ... Richard. > Ciao! > Steven