The following patch was backported to gcc4.7. The patch solves PR53700.
It was successfully bootstrapped on x86/x86-64. 2012-06-18 Vladimir Makarov <vmaka...@redhat.com> PR rtl-optimization/53700 Backport from mainline 2012-03-29 Vladimir Makarov <vmaka...@redhat.com> * ira-color.c (setup_left_conflict_sizes_p): Process all conflicting objects.
Index: ira-color.c =================================================================== --- ira-color.c (revision 188736) +++ ira-color.c (working copy) @@ -821,7 +821,6 @@ setup_left_conflict_sizes_p (ira_allocno node_preorder_num = node->preorder_num; COPY_HARD_REG_SET (node_set, node->hard_regs->set); node_check_tick++; - curr_allocno_process++; for (k = 0; k < nobj; k++) { ira_object_t obj = ALLOCNO_OBJECT (a, k); @@ -838,12 +837,10 @@ setup_left_conflict_sizes_p (ira_allocno conflict_data = ALLOCNO_COLOR_DATA (conflict_a); if (! ALLOCNO_COLOR_DATA (conflict_a)->in_graph_p - || conflict_data->last_process == curr_allocno_process || ! hard_reg_set_intersect_p (profitable_hard_regs, conflict_data ->profitable_hard_regs)) continue; - conflict_data->last_process = curr_allocno_process; conflict_node = conflict_data->hard_regs_node; COPY_HARD_REG_SET (conflict_node_set, conflict_node->hard_regs->set); if (hard_reg_set_subset_p (node_set, conflict_node_set))