This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
The following patch fixes http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56999The problem was in complicated interactions of coalescing and doing/undoing inheritance and assignment sub-passes through several iterations. One solution would be in modifying coalescing in order to take future actions in undoing inheritance. Another solution is to move coalesce pass after doing/undoing inheritance sub-passes. The first solution complicates code and make passes more dependable although potentially decreasing # passes of creating live ranges. The second solution makes coalescing pass simpler and less dependable. After some experiments I've chosen the 2nd solution as it makes code more maintainable and less error-prone. On my tests I found that in 32-bit mode it runs 10% more live-range passes (that is about 1/5th of LRA run time), in 64-bit mode the # passes are the same. I check cpu and real time on 500K lines fortran code and did not find any visible increase in compilation time.
The patch was successfully bootstrapped on x86-64. Committed to trunk as rev. 198092. 2013-04-18 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/56992 * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and related code. (lra_coalesce): Remove split_origin_bitmap and related code. * lra.c (lra): Coalesce after undoing inheritance. Recreate live ranges if necessary. 2013-04-18 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/56992 * g++.dg/opt/pr56999.C: New test.
Attachment:
pr56999.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |