summaryrefslogtreecommitdiff
path: root/gcc/ira-build.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2008-09-26 00:14:30 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2008-09-26 00:14:30 +0000
commitb15a7ae67a9e7e2d0791b2beb74cacdd5dc5fa08 (patch)
tree2741e87ab5d7829e6e4d8233ab8d254ba88a0f4b /gcc/ira-build.c
parent6396547e62404f1a4965a61dd5c87258cda2be2c (diff)
downloadgcc-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.c3
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)
{