aboutsummaryrefslogtreecommitdiff
path: root/gcc/ira-int.h
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2008-11-10 23:21:45 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2008-11-10 23:21:45 +0000
commit548a63222ed9b9e8de3503388d64366121ba621d (patch)
tree7fd0254faf506029de880777901eccc09123341f /gcc/ira-int.h
parentbefc25099bbedd2d49f23f929b6c441894c8cb5c (diff)
downloadgcc-548a63222ed9b9e8de3503388d64366121ba621d.zip
gcc-548a63222ed9b9e8de3503388d64366121ba621d.tar.gz
gcc-548a63222ed9b9e8de3503388d64366121ba621d.tar.bz2
re PR rtl-optimization/37948 (IRA generates slower code)
2008-11-07 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimizations/37948 * ira-int.h (struct ira_allocno_copy): New member constraint_p. (ira_create_copy, ira_add_allocno_copy): New parameter. * ira-conflicts.c (process_regs_for_copy): New parameter. Pass it to ira_add_allocno_copy. (process_reg_shuffles, add_insn_allocno_copies): Pass a new parameter to process_regs_for_copy. (propagate_copies): Pass a new parameter to ira_add_allocno_copy. Fix typo in passing second allocno to ira_add_allocno_copy. * ira-color.c (update_conflict_hard_regno_costs): Use head of coalesced allocnos list. (assign_hard_reg): Ditto. Check that assigned allocnos are not in the graph. (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket. (add_ira_allocno_to_ordered_bucket): Rename to add_allocno_to_ordered_bucket. (push_ira_allocno_to_stack): Rename to push_allocno_to_stack. Use head of coalesced allocnos list. (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP. Check that it is aready calculated. (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill. (setup_allocno_left_conflicts_num): Use head of coalesced allocnos list. (coalesce_allocnos): Do extended coalescing too. * ira-emit.c (add_range_and_copies_from_move_list): Pass a new parameter to ira_add_allocno_copy. * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new parameter. (print_copy): Print copy origination too. * ira-costs.c (scan_one_insn): Use alloc_pref for load from equivalent memory. From-SVN: r141753
Diffstat (limited to 'gcc/ira-int.h')
-rw-r--r--gcc/ira-int.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index c72df3d..c5e4bec 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -496,6 +496,7 @@ struct ira_allocno_copy
ira_allocno_t first, second;
/* Execution frequency of the copy. */
int freq;
+ bool constraint_p;
/* It is a move insn which is an origin of the copy. The member
value for the copy representing two operand insn constraints or
for the copy created to remove register shuffle is NULL. In last
@@ -859,12 +860,12 @@ extern allocno_live_range_t ira_create_allocno_live_range
extern void ira_finish_allocno_live_range (allocno_live_range_t);
extern void ira_free_allocno_updated_costs (ira_allocno_t);
extern ira_copy_t ira_create_copy (ira_allocno_t, ira_allocno_t,
- int, rtx, ira_loop_tree_node_t);
+ int, bool, rtx, ira_loop_tree_node_t);
extern void ira_add_allocno_copy_to_list (ira_copy_t);
extern void ira_swap_allocno_copy_ends_if_necessary (ira_copy_t);
extern void ira_remove_allocno_copy_from_list (ira_copy_t);
-extern ira_copy_t ira_add_allocno_copy (ira_allocno_t, ira_allocno_t, int, rtx,
- ira_loop_tree_node_t);
+extern ira_copy_t ira_add_allocno_copy (ira_allocno_t, ira_allocno_t, int,
+ bool, rtx, ira_loop_tree_node_t);
extern int *ira_allocate_cost_vector (enum reg_class);
extern void ira_free_cost_vector (int *, enum reg_class);