patch to fix reported worsening allocno class choice on the 2nd pass of ira reg costs on MIPS

Vladimir Makarov vmakarov@redhat.com
Mon Jun 4 18:34:00 GMT 2012


   The following patch solves the problem.  Instead of pressure classes 
which are focused on relation register moves with memory costs, we use 
an uniform classes whose register move costs are the same for all their 
sublcasses.  The unifrom classes is used not to slow down the 2nd pass.

   The patch does not changed the generated code on x86/x86-64 and does 
not slow IRA down (I've tried it on variety of tests) while it does 
solve the reported problem.  The patch also adds priniting debug info 
about uniform and important classes.

   The patch was successfully bootstrapped on x86/x86-64.

   Committed as rev. 188199.

  2012-06-04  Vladimir Makarov <vmakarov@redhat.com>

         * ira-int.h (struct target_ira_int): Add member
         x_ira_uniform_class_p.
         (ira_uniform_class_p): New macro.

         * ira.c (setup_uniform_class_p): New function.
         (setup_allocno_and_important_classes): Call the function.
         (print_unform_and_important_classes): New function.
         (print_classes): Rename to print_translated_classes.
         (ira_debug_allocno_classes): Add call of
         print_unform_and_important_classes.

         * ira-costs.c (setup_regno_cost_classes_by_aclass): Use uniform
         classes instead of pressure classes.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: uniform.patch
Type: text/x-patch
Size: 6093 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20120604/44ac6271/attachment.bin>


More information about the Gcc-patches mailing list