diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2008-09-26 00:14:30 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2008-09-26 00:14:30 +0000 |
commit | b15a7ae67a9e7e2d0791b2beb74cacdd5dc5fa08 (patch) | |
tree | 2741e87ab5d7829e6e4d8233ab8d254ba88a0f4b /gcc/ira-build.c | |
parent | 6396547e62404f1a4965a61dd5c87258cda2be2c (diff) | |
download | gcc-b15a7ae67a9e7e2d0791b2beb74cacdd5dc5fa08.tar.gz |
re PR middle-end/37448 (cannot compile big function)
2008-09-25 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/37448
* ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
(ira_compress_allocno_live_ranges): New prototype.
* ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
(coalesced_allocnos_living_at_program_points): New.
(coalesced_allocnos_live_at_points_p,
set_coalesced_allocnos_live_points): New functions.
(coalesce_spill_slots): Rewrite.
* ira-lives.c (remove_some_program_points_and_update_live_ranges,
ira_compress_allocno_live_ranges): New functions.
* ira-build.c (ira_flattening): Call
ira_compress_allocno_live_ranges.
(ira_build): Ditto.
From-SVN: r140674
Diffstat (limited to 'gcc/ira-build.c')
-rw-r--r-- | gcc/ira-build.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/ira-build.c b/gcc/ira-build.c index fa0a39c192a..55a3beb71bd 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -2371,6 +2371,8 @@ ira_flattening (int max_regno_before_emit, int ira_max_point_before_emit) ira_swap_allocno_copy_ends_if_necessary (cp); } rebuild_regno_allocno_maps (); + if (ira_max_point != ira_max_point_before_emit) + ira_compress_allocno_live_ranges (); ira_free (regno_top_level_allocno_map); } @@ -2427,6 +2429,7 @@ ira_build (bool loops_p) ira_costs (); ira_create_allocno_live_ranges (); remove_unnecessary_regions (); + ira_compress_allocno_live_ranges (); loops_p = more_one_region_p (); if (loops_p) { |