Commit acf41a74 by Bernd Schmidt Committed by Bernd Schmidt

dbgcnt.def (ira_move): New counter.

	* dbgcnt.def (ira_move): New counter.
	* ira-int.h (ira_create_new_reg): Declare function.
	(first_moveable_pseudo, last_moveable_pseudo): Declare variables.
	* ira-emit.c (ira_create_new_reg): Renamed from craete_new_reg and
	no longer static.  All callers changed.
	* ira.c: Include "dbgcnt.h".
	(rtx_moveable_p, insn_dominated_by_p, find_moveable_pseudos,
	move_unallocated_pseudos): New static functions.
	(first_moveable_pseudo, last_moveable_pseudo): New global variables.
	(pseudo_replaced_reg, pseudo_move_insn): New static variables.
	(ira): Call find_moveable_pseudos and move_unallocated_pseudos.
	* ira-costs.c (find_costs_and_classes): Assign a memory cost of zero
	to the pseudos generated in find_moveable_pseudos.
	* Makefile.in (ira.o): Add $(DBGCNT_H).

From-SVN: r186378
parent b9b09214
2012-04-12 Bernd Schmidt <bernds@codesourcery.com>
* dbgcnt.def (ira_move): New counter.
* ira-int.h (ira_create_new_reg): Declare function.
(first_moveable_pseudo, last_moveable_pseudo): Declare variables.
* ira-emit.c (ira_create_new_reg): Renamed from craete_new_reg and
no longer static. All callers changed.
* ira.c: Include "dbgcnt.h".
(rtx_moveable_p, insn_dominated_by_p, find_moveable_pseudos,
move_unallocated_pseudos): New static functions.
(first_moveable_pseudo, last_moveable_pseudo): New global variables.
(pseudo_replaced_reg, pseudo_move_insn): New static variables.
(ira): Call find_moveable_pseudos and move_unallocated_pseudos.
* ira-costs.c (find_costs_and_classes): Assign a memory cost of zero
to the pseudos generated in find_moveable_pseudos.
* Makefile.in (ira.o): Add $(DBGCNT_H).
2012-04-12 Richard Guenther <rguenther@suse.de> 2012-04-12 Richard Guenther <rguenther@suse.de>
PR tree-optimization/52943 PR tree-optimization/52943
......
...@@ -3292,7 +3292,7 @@ ira-lives.o: ira-lives.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ ...@@ -3292,7 +3292,7 @@ ira-lives.o: ira-lives.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(DF_H) sparseset.h $(IRA_INT_H) $(DF_H) sparseset.h $(IRA_INT_H)
ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(OBSTACK_H) \ $(TM_H) $(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(OBSTACK_H) \
$(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) \ $(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) $(DBGCNT_H) \
$(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) output.h \ $(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) output.h \
$(EXCEPT_H) reload.h toplev.h $(DIAGNOSTIC_CORE_H) $(INTEGRATE_H) $(DF_H) $(GGC_H) $(IRA_INT_H) $(EXCEPT_H) reload.h toplev.h $(DIAGNOSTIC_CORE_H) $(INTEGRATE_H) $(DF_H) $(GGC_H) $(IRA_INT_H)
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
......
...@@ -184,3 +184,4 @@ DEBUG_COUNTER (sms_sched_loop) ...@@ -184,3 +184,4 @@ DEBUG_COUNTER (sms_sched_loop)
DEBUG_COUNTER (store_motion) DEBUG_COUNTER (store_motion)
DEBUG_COUNTER (split_for_sched2) DEBUG_COUNTER (split_for_sched2)
DEBUG_COUNTER (tail_call) DEBUG_COUNTER (tail_call)
DEBUG_COUNTER (ira_move)
...@@ -1650,6 +1650,8 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1650,6 +1650,8 @@ find_costs_and_classes (FILE *dump_file)
COSTS (total_allocno_costs, parent_a_num)->mem_cost COSTS (total_allocno_costs, parent_a_num)->mem_cost
+= add_cost; += add_cost;
if (i >= first_moveable_pseudo && i < last_moveable_pseudo)
COSTS (total_allocno_costs, parent_a_num)->mem_cost = 0;
} }
a_costs = COSTS (costs, a_num)->cost; a_costs = COSTS (costs, a_num)->cost;
for (k = cost_classes_ptr->num - 1; k >= 0; k--) for (k = cost_classes_ptr->num - 1; k >= 0; k--)
...@@ -1667,7 +1669,9 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1667,7 +1669,9 @@ find_costs_and_classes (FILE *dump_file)
i_mem_cost += add_cost; i_mem_cost += add_cost;
} }
} }
if (equiv_savings < 0) if (i >= first_moveable_pseudo && i < last_moveable_pseudo)
i_mem_cost = 0;
else if (equiv_savings < 0)
i_mem_cost = -equiv_savings; i_mem_cost = -equiv_savings;
else if (equiv_savings > 0) else if (equiv_savings > 0)
{ {
......
...@@ -330,8 +330,8 @@ add_to_edge_list (edge e, move_t move, bool head_p) ...@@ -330,8 +330,8 @@ add_to_edge_list (edge e, move_t move, bool head_p)
/* Create and return new pseudo-register with the same attributes as /* Create and return new pseudo-register with the same attributes as
ORIGINAL_REG. */ ORIGINAL_REG. */
static rtx rtx
create_new_reg (rtx original_reg) ira_create_new_reg (rtx original_reg)
{ {
rtx new_reg; rtx new_reg;
...@@ -625,7 +625,7 @@ change_loop (ira_loop_tree_node_t node) ...@@ -625,7 +625,7 @@ change_loop (ira_loop_tree_node_t node)
fprintf (ira_dump_file, " %i vs parent %i:", fprintf (ira_dump_file, " %i vs parent %i:",
ALLOCNO_HARD_REGNO (allocno), ALLOCNO_HARD_REGNO (allocno),
ALLOCNO_HARD_REGNO (parent_allocno)); ALLOCNO_HARD_REGNO (parent_allocno));
set_allocno_reg (allocno, create_new_reg (original_reg)); set_allocno_reg (allocno, ira_create_new_reg (original_reg));
} }
} }
} }
...@@ -646,7 +646,7 @@ change_loop (ira_loop_tree_node_t node) ...@@ -646,7 +646,7 @@ change_loop (ira_loop_tree_node_t node)
if (! used_p) if (! used_p)
continue; continue;
bitmap_set_bit (renamed_regno_bitmap, regno); bitmap_set_bit (renamed_regno_bitmap, regno);
set_allocno_reg (allocno, create_new_reg (allocno_emit_reg (allocno))); set_allocno_reg (allocno, ira_create_new_reg (allocno_emit_reg (allocno)));
} }
} }
...@@ -852,7 +852,7 @@ modify_move_list (move_t list) ...@@ -852,7 +852,7 @@ modify_move_list (move_t list)
ALLOCNO_ASSIGNED_P (new_allocno) = true; ALLOCNO_ASSIGNED_P (new_allocno) = true;
ALLOCNO_HARD_REGNO (new_allocno) = -1; ALLOCNO_HARD_REGNO (new_allocno) = -1;
ALLOCNO_EMIT_DATA (new_allocno)->reg ALLOCNO_EMIT_DATA (new_allocno)->reg
= create_new_reg (allocno_emit_reg (set_move->to)); = ira_create_new_reg (allocno_emit_reg (set_move->to));
/* Make it possibly conflicting with all earlier /* Make it possibly conflicting with all earlier
created allocnos. Cases where temporary allocnos created allocnos. Cases where temporary allocnos
......
...@@ -1416,3 +1416,6 @@ ira_allocate_and_set_or_copy_costs (int **vec, enum reg_class aclass, ...@@ -1416,3 +1416,6 @@ ira_allocate_and_set_or_copy_costs (int **vec, enum reg_class aclass,
reg_costs[i] = val; reg_costs[i] = val;
} }
} }
extern rtx ira_create_new_reg (rtx);
extern int first_moveable_pseudo, last_moveable_pseudo;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment