On Wed, Nov 13, 2013 at 6:56 PM, Vladimir Makarov wrote: > The following patch improves coloring. The order of pushing allocnos on > the coloring stack from a bunch of colorable allocnos was always important > for generated code performance. LRA has a mechanism of allocating pseudos > by threads. Thread in LRA is a set of non-conflicting pseudos connected by > moves (or by future reload insns). Allocating pseudos by threads in LRA > permits to improve code by increasing chance of removing the move insns. > > So the same mechanism can be used for IRA. The patch implements it. The > difference is only that LRA forms thread statically before allocation > sub-pass. That is because the basic allocation are already done in IRA. > The statically thread forming works well for IRA too. But even better > results can be got by dynamically forming threads. It means that we are > forming threads during allocation and includes only colorable allocnos. > > The results of using threads in IRA is pretty good. The average code size > (text segment) of SPEC2000 is improved (by >0.1% for x86 SPECFP2000 and > > 0.3% for x86-64 SPECFP2000). The biggest code performance improvement (> 1%) > is obtained on x86-64 SPECFP2000. Performance tools report that additional > code takes only about 0.05% additionally executed insns.
Nice! Can you please also update the leading comment in ira.c? It seems worth mentioning this approach under the "Coloring" bullet (ira.c:176). (Not sure if that whole comment block is otherwise up to date??) Ciao! Steven