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