Commit 9a48a93f by Vladimir Makarov Committed by Vladimir Makarov

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
parent f6d53468
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.
......
...@@ -1495,7 +1495,7 @@ create_bb_allocnos (ira_loop_tree_node_t bb_node) ...@@ -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) ...@@ -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))
{ {
......
...@@ -1020,8 +1020,8 @@ ira_loop_edge_freq (ira_loop_tree_node_t loop_node, int regno, bool exit_p) ...@@ -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) ...@@ -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);
} }
......
...@@ -390,9 +390,9 @@ generate_edge_moves (edge e) ...@@ -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) ...@@ -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)));
......
...@@ -838,7 +838,7 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node) ...@@ -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);
......
...@@ -1549,7 +1549,7 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, ...@@ -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, ...@@ -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
......
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