reload.c (push_reload, [...]): Use df_get_live_out instead of DF_LR_OUT.

2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>

	* reload.c (push_reload, find_dummy_reload): Use df_get_live_out
	instead of DF_LR_OUT.

	* ira-lives.c (process_bb_node_lives): Ditto.

	* ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
	instead of DF_LR_{OUT,IN}.

	* ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.

	* ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.

From-SVN: r145309
This commit is contained in:
Vladimir Makarov 2009-03-30 17:59:21 +00:00 committed by Vladimir Makarov
parent f6d534688d
commit 9a48a93f5f
6 changed files with 30 additions and 15 deletions

View File

@ -1,3 +1,17 @@
2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
* reload.c (push_reload, find_dummy_reload): Use df_get_live_out
instead of DF_LR_OUT.
* ira-lives.c (process_bb_node_lives): Ditto.
* ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
instead of DF_LR_{OUT,IN}.
* ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
* ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
2009-03-30 Jan Hubicka <jh@suse.cz> 2009-03-30 Jan Hubicka <jh@suse.cz>
* except.c (label_to_region_map): Fix thinko. * except.c (label_to_region_map): Fix thinko.

View File

@ -1495,7 +1495,7 @@ create_bb_allocnos (ira_loop_tree_node_t bb_node)
create_insn_allocnos (PATTERN (insn), false); create_insn_allocnos (PATTERN (insn), false);
/* It might be a allocno living through from one subloop to /* It might be a allocno living through from one subloop to
another. */ another. */
EXECUTE_IF_SET_IN_REG_SET (DF_LR_IN (bb), FIRST_PSEUDO_REGISTER, i, bi) EXECUTE_IF_SET_IN_REG_SET (df_get_live_in (bb), FIRST_PSEUDO_REGISTER, i, bi)
if (ira_curr_regno_allocno_map[i] == NULL) if (ira_curr_regno_allocno_map[i] == NULL)
ira_create_allocno (i, false, ira_curr_loop_tree_node); ira_create_allocno (i, false, ira_curr_loop_tree_node);
} }
@ -1511,9 +1511,9 @@ create_loop_allocnos (edge e)
bitmap_iterator bi; bitmap_iterator bi;
ira_loop_tree_node_t parent; ira_loop_tree_node_t parent;
live_in_regs = DF_LR_IN (e->dest); live_in_regs = df_get_live_in (e->dest);
border_allocnos = ira_curr_loop_tree_node->border_allocnos; border_allocnos = ira_curr_loop_tree_node->border_allocnos;
EXECUTE_IF_SET_IN_REG_SET (DF_LR_OUT (e->src), EXECUTE_IF_SET_IN_REG_SET (df_get_live_out (e->src),
FIRST_PSEUDO_REGISTER, i, bi) FIRST_PSEUDO_REGISTER, i, bi)
if (bitmap_bit_p (live_in_regs, i)) if (bitmap_bit_p (live_in_regs, i))
{ {

View File

@ -1020,8 +1020,8 @@ ira_loop_edge_freq (ira_loop_tree_node_t loop_node, int regno, bool exit_p)
FOR_EACH_EDGE (e, ei, loop_node->loop->header->preds) FOR_EACH_EDGE (e, ei, loop_node->loop->header->preds)
if (e->src != loop_node->loop->latch if (e->src != loop_node->loop->latch
&& (regno < 0 && (regno < 0
|| (bitmap_bit_p (DF_LR_OUT (e->src), regno) || (bitmap_bit_p (df_get_live_out (e->src), regno)
&& bitmap_bit_p (DF_LR_IN (e->dest), regno)))) && bitmap_bit_p (df_get_live_in (e->dest), regno))))
freq += EDGE_FREQUENCY (e); freq += EDGE_FREQUENCY (e);
} }
else else
@ -1029,8 +1029,8 @@ ira_loop_edge_freq (ira_loop_tree_node_t loop_node, int regno, bool exit_p)
edges = get_loop_exit_edges (loop_node->loop); edges = get_loop_exit_edges (loop_node->loop);
for (i = 0; VEC_iterate (edge, edges, i, e); i++) for (i = 0; VEC_iterate (edge, edges, i, e); i++)
if (regno < 0 if (regno < 0
|| (bitmap_bit_p (DF_LR_OUT (e->src), regno) || (bitmap_bit_p (df_get_live_out (e->src), regno)
&& bitmap_bit_p (DF_LR_IN (e->dest), regno))) && bitmap_bit_p (df_get_live_in (e->dest), regno)))
freq += EDGE_FREQUENCY (e); freq += EDGE_FREQUENCY (e);
VEC_free (edge, heap, edges); VEC_free (edge, heap, edges);
} }

View File

@ -390,9 +390,9 @@ generate_edge_moves (edge e)
return; return;
src_map = src_loop_node->regno_allocno_map; src_map = src_loop_node->regno_allocno_map;
dest_map = dest_loop_node->regno_allocno_map; dest_map = dest_loop_node->regno_allocno_map;
EXECUTE_IF_SET_IN_REG_SET (DF_LR_IN (e->dest), EXECUTE_IF_SET_IN_REG_SET (df_get_live_in (e->dest),
FIRST_PSEUDO_REGISTER, regno, bi) FIRST_PSEUDO_REGISTER, regno, bi)
if (bitmap_bit_p (DF_LR_OUT (e->src), regno)) if (bitmap_bit_p (df_get_live_out (e->src), regno))
{ {
src_allocno = src_map[regno]; src_allocno = src_map[regno];
dest_allocno = dest_map[regno]; dest_allocno = dest_map[regno];
@ -1028,15 +1028,16 @@ add_ranges_and_copies (void)
destination block) to use for searching allocnos by their destination block) to use for searching allocnos by their
regnos because of subsequent IR flattening. */ regnos because of subsequent IR flattening. */
node = IRA_BB_NODE (bb)->parent; node = IRA_BB_NODE (bb)->parent;
bitmap_copy (live_through, DF_LR_IN (bb)); bitmap_copy (live_through, df_get_live_in (bb));
add_range_and_copies_from_move_list add_range_and_copies_from_move_list
(at_bb_start[bb->index], node, live_through, REG_FREQ_FROM_BB (bb)); (at_bb_start[bb->index], node, live_through, REG_FREQ_FROM_BB (bb));
bitmap_copy (live_through, DF_LR_OUT (bb)); bitmap_copy (live_through, df_get_live_out (bb));
add_range_and_copies_from_move_list add_range_and_copies_from_move_list
(at_bb_end[bb->index], node, live_through, REG_FREQ_FROM_BB (bb)); (at_bb_end[bb->index], node, live_through, REG_FREQ_FROM_BB (bb));
FOR_EACH_EDGE (e, ei, bb->succs) FOR_EACH_EDGE (e, ei, bb->succs)
{ {
bitmap_and (live_through, DF_LR_IN (e->dest), DF_LR_OUT (bb)); bitmap_and (live_through, df_get_live_in (e->dest),
df_get_live_out (bb));
add_range_and_copies_from_move_list add_range_and_copies_from_move_list
((move_t) e->aux, node, live_through, ((move_t) e->aux, node, live_through,
REG_FREQ_FROM_EDGE_FREQ (EDGE_FREQUENCY (e))); REG_FREQ_FROM_EDGE_FREQ (EDGE_FREQUENCY (e)));

View File

@ -838,7 +838,7 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
high_pressure_start_point[ira_reg_class_cover[i]] = -1; high_pressure_start_point[ira_reg_class_cover[i]] = -1;
} }
curr_bb_node = loop_tree_node; curr_bb_node = loop_tree_node;
reg_live_out = DF_LR_OUT (bb); reg_live_out = df_get_live_out (bb);
sparseset_clear (allocnos_live); sparseset_clear (allocnos_live);
REG_SET_TO_HARD_REG_SET (hard_regs_live, reg_live_out); REG_SET_TO_HARD_REG_SET (hard_regs_live, reg_live_out);
AND_COMPL_HARD_REG_SET (hard_regs_live, eliminable_regset); AND_COMPL_HARD_REG_SET (hard_regs_live, eliminable_regset);

View File

@ -1549,7 +1549,7 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
&& reg_mentioned_p (XEXP (note, 0), in) && reg_mentioned_p (XEXP (note, 0), in)
/* Check that a former pseudo is valid; see find_dummy_reload. */ /* Check that a former pseudo is valid; see find_dummy_reload. */
&& (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER
|| (! bitmap_bit_p (DF_LR_OUT (ENTRY_BLOCK_PTR), || (! bitmap_bit_p (df_get_live_out (ENTRY_BLOCK_PTR),
ORIGINAL_REGNO (XEXP (note, 0))) ORIGINAL_REGNO (XEXP (note, 0)))
&& hard_regno_nregs[regno][GET_MODE (XEXP (note, 0))] == 1)) && hard_regno_nregs[regno][GET_MODE (XEXP (note, 0))] == 1))
&& ! refers_to_regno_for_reload_p (regno, && ! refers_to_regno_for_reload_p (regno,
@ -2027,7 +2027,7 @@ find_dummy_reload (rtx real_in, rtx real_out, rtx *inloc, rtx *outloc,
can ignore the conflict). We must never introduce writes can ignore the conflict). We must never introduce writes
to such hardregs, as they would clobber the other live to such hardregs, as they would clobber the other live
pseudo. See PR 20973. */ pseudo. See PR 20973. */
|| (!bitmap_bit_p (DF_LR_OUT (ENTRY_BLOCK_PTR), || (!bitmap_bit_p (df_get_live_out (ENTRY_BLOCK_PTR),
ORIGINAL_REGNO (in)) ORIGINAL_REGNO (in))
/* Similarly, only do this if we can be sure that the death /* Similarly, only do this if we can be sure that the death
note is still valid. global can assign some hardreg to note is still valid. global can assign some hardreg to