Skip to content

Commit

Permalink
Split NEXT_INSN/PREV_INSN into lvalue and rvalue forms
Browse files Browse the repository at this point in the history
/
2014-08-19  David Malcolm  <dmalcolm@redhat.com>

	* rtx-classes-status.txt: Add SET_NEXT_INSN, SET_PREV_INSN.

gcc/
2014-08-19  David Malcolm  <dmalcolm@redhat.com>

	* rtl.h (PREV_INSN): Split macro in two: the existing one,
	for rvalues, and...
	(SET_PREV_INSN): New macro, for use as an lvalue.
	(NEXT_INSN, SET_NEXT_INSN): Likewise.

	* caller-save.c (save_call_clobbered_regs): Convert lvalue use of
	PREV_INSN/NEXT_INSN into SET_PREV_INSN/SET_NEXT_INSN.
	* cfgrtl.c (try_redirect_by_replacing_jump): Likewise.
	(fixup_abnormal_edges): Likewise.
	(unlink_insn_chain): Likewise.
	(fixup_reorder_chain): Likewise.
	(cfg_layout_delete_block): Likewise.
	(cfg_layout_merge_blocks): Likewise.
	* combine.c (update_cfg_for_uncondjump): Likewise.
	* emit-rtl.c (link_insn_into_chain): Likewise.
	(remove_insn): Likewise.
	(delete_insns_since): Likewise.
	(reorder_insns_nobb): Likewise.
	(emit_insn_after_1): Likewise.
	* final.c (rest_of_clean_state): Likewise.
	(final_scan_insn): Likewise.
	* gcse.c (can_assign_to_reg_without_clobbers_p): Likewise.
	* haifa-sched.c (concat_note_lists): Likewise.
	(remove_notes): Likewise.
	(restore_other_notes): Likewise.
	(move_insn): Likewise.
	(unlink_bb_notes): Likewise.
	(restore_bb_notes): Likewise.
	* jump.c (delete_for_peephole): Likewise.
	* optabs.c (emit_libcall_block_1): Likewise.
	* reorg.c (emit_delay_sequence): Likewise.
	(fill_simple_delay_slots): Likewise.
	* sel-sched-ir.c (sel_move_insn): Likewise.
	(sel_remove_insn): Likewise.
	(get_bb_note_from_pool): Likewise.
	* sel-sched.c (move_nop_to_previous_block): Likewise.

	* config/bfin/bfin.c (reorder_var_tracking_notes): Likewise.
	* config/c6x/c6x.c (gen_one_bundle): Likewise.
	(c6x_gen_bundles): Likewise.
	(hwloop_optimize): Likewise.
	* config/frv/frv.c (frv_function_prologue): Likewise.
	(frv_register_nop): Likewise.
	* config/ia64/ia64.c (ia64_init_dfa_pre_cycle_insn): Likewise.
	(ia64_reorg): Likewise.
	* config/mep/mep.c (mep_reorg_addcombine): Likewise.
	(mep_make_bundle): Likewise.
	(mep_bundle_insns): Likewise.
	* config/picochip/picochip.c (reorder_var_tracking_notes): Likewise.
	* config/tilegx/tilegx.c (reorder_var_tracking_notes): Likewise.
	* config/tilepro/tilepro.c (reorder_var_tracking_notes): Likewise.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214128 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
dmalcolm committed Aug 19, 2014
1 parent 7ad1fa0 commit 4a57a2e
Show file tree
Hide file tree
Showing 24 changed files with 271 additions and 205 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
2014-08-19 David Malcolm <dmalcolm@redhat.com>

* rtx-classes-status.txt: Add SET_NEXT_INSN, SET_PREV_INSN.

2014-08-18 Patrick Palka <ppalka@gcc.gnu.org>

* MAINTAINERS (Write After Approval): Add myself.
Expand Down
54 changes: 54 additions & 0 deletions gcc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,57 @@
2014-08-19 David Malcolm <dmalcolm@redhat.com>

* rtl.h (PREV_INSN): Split macro in two: the existing one,
for rvalues, and...
(SET_PREV_INSN): New macro, for use as an lvalue.
(NEXT_INSN, SET_NEXT_INSN): Likewise.

* caller-save.c (save_call_clobbered_regs): Convert lvalue use of
PREV_INSN/NEXT_INSN into SET_PREV_INSN/SET_NEXT_INSN.
* cfgrtl.c (try_redirect_by_replacing_jump): Likewise.
(fixup_abnormal_edges): Likewise.
(unlink_insn_chain): Likewise.
(fixup_reorder_chain): Likewise.
(cfg_layout_delete_block): Likewise.
(cfg_layout_merge_blocks): Likewise.
* combine.c (update_cfg_for_uncondjump): Likewise.
* emit-rtl.c (link_insn_into_chain): Likewise.
(remove_insn): Likewise.
(delete_insns_since): Likewise.
(reorder_insns_nobb): Likewise.
(emit_insn_after_1): Likewise.
* final.c (rest_of_clean_state): Likewise.
(final_scan_insn): Likewise.
* gcse.c (can_assign_to_reg_without_clobbers_p): Likewise.
* haifa-sched.c (concat_note_lists): Likewise.
(remove_notes): Likewise.
(restore_other_notes): Likewise.
(move_insn): Likewise.
(unlink_bb_notes): Likewise.
(restore_bb_notes): Likewise.
* jump.c (delete_for_peephole): Likewise.
* optabs.c (emit_libcall_block_1): Likewise.
* reorg.c (emit_delay_sequence): Likewise.
(fill_simple_delay_slots): Likewise.
* sel-sched-ir.c (sel_move_insn): Likewise.
(sel_remove_insn): Likewise.
(get_bb_note_from_pool): Likewise.
* sel-sched.c (move_nop_to_previous_block): Likewise.

* config/bfin/bfin.c (reorder_var_tracking_notes): Likewise.
* config/c6x/c6x.c (gen_one_bundle): Likewise.
(c6x_gen_bundles): Likewise.
(hwloop_optimize): Likewise.
* config/frv/frv.c (frv_function_prologue): Likewise.
(frv_register_nop): Likewise.
* config/ia64/ia64.c (ia64_init_dfa_pre_cycle_insn): Likewise.
(ia64_reorg): Likewise.
* config/mep/mep.c (mep_reorg_addcombine): Likewise.
(mep_make_bundle): Likewise.
(mep_bundle_insns): Likewise.
* config/picochip/picochip.c (reorder_var_tracking_notes): Likewise.
* config/tilegx/tilegx.c (reorder_var_tracking_notes): Likewise.
* config/tilepro/tilepro.c (reorder_var_tracking_notes): Likewise.

2014-08-19 David Malcolm <dmalcolm@redhat.com>

* basic-block.h (BB_HEAD): Convert to a function. Strengthen the
Expand Down
12 changes: 6 additions & 6 deletions gcc/caller-save.c
Original file line number Diff line number Diff line change
Expand Up @@ -913,13 +913,13 @@ save_call_clobbered_regs (void)
prev = PREV_INSN (ins);
if (NOTE_P (ins))
{
NEXT_INSN (prev) = NEXT_INSN (ins);
PREV_INSN (NEXT_INSN (ins)) = prev;
PREV_INSN (ins) = insn;
NEXT_INSN (ins) = NEXT_INSN (insn);
NEXT_INSN (insn) = ins;
SET_NEXT_INSN (prev) = NEXT_INSN (ins);
SET_PREV_INSN (NEXT_INSN (ins)) = prev;
SET_PREV_INSN (ins) = insn;
SET_NEXT_INSN (ins) = NEXT_INSN (insn);
SET_NEXT_INSN (insn) = ins;
if (NEXT_INSN (ins))
PREV_INSN (NEXT_INSN (ins)) = ins;
SET_PREV_INSN (NEXT_INSN (ins)) = ins;
if (BB_END (bb) == insn)
SET_BB_END (bb) = ins;
}
Expand Down
76 changes: 38 additions & 38 deletions gcc/cfgrtl.c
Original file line number Diff line number Diff line change
Expand Up @@ -1060,11 +1060,11 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
if (BARRIER_P (insn))
{
if (PREV_INSN (insn))
NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
else
SET_BB_FOOTER (src) = NEXT_INSN (insn);
if (NEXT_INSN (insn))
PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
}
if (LABEL_P (insn))
break;
Expand Down Expand Up @@ -1132,14 +1132,14 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
update_bb_for_insn_chain (NEXT_INSN (BB_END (src)),
PREV_INSN (barrier), src);

NEXT_INSN (PREV_INSN (new_insn)) = NEXT_INSN (new_insn);
PREV_INSN (NEXT_INSN (new_insn)) = PREV_INSN (new_insn);
SET_NEXT_INSN (PREV_INSN (new_insn)) = NEXT_INSN (new_insn);
SET_PREV_INSN (NEXT_INSN (new_insn)) = PREV_INSN (new_insn);

NEXT_INSN (new_insn) = barrier;
NEXT_INSN (PREV_INSN (barrier)) = new_insn;
SET_NEXT_INSN (new_insn) = barrier;
SET_NEXT_INSN (PREV_INSN (barrier)) = new_insn;

PREV_INSN (new_insn) = PREV_INSN (barrier);
PREV_INSN (barrier) = new_insn;
SET_PREV_INSN (new_insn) = PREV_INSN (barrier);
SET_PREV_INSN (barrier) = new_insn;
}
}
}
Expand Down Expand Up @@ -3270,8 +3270,8 @@ fixup_abnormal_edges (void)
{
/* We're not deleting it, we're moving it. */
INSN_DELETED_P (insn) = 0;
PREV_INSN (insn) = NULL_RTX;
NEXT_INSN (insn) = NULL_RTX;
SET_PREV_INSN (insn) = NULL_RTX;
SET_NEXT_INSN (insn) = NULL_RTX;

insert_insn_on_edge (insn, e);
inserted = true;
Expand Down Expand Up @@ -3302,12 +3302,12 @@ unlink_insn_chain (rtx first, rtx last)
rtx prevfirst = PREV_INSN (first);
rtx nextlast = NEXT_INSN (last);

PREV_INSN (first) = NULL;
NEXT_INSN (last) = NULL;
SET_PREV_INSN (first) = NULL;
SET_NEXT_INSN (last) = NULL;
if (prevfirst)
NEXT_INSN (prevfirst) = nextlast;
SET_NEXT_INSN (prevfirst) = nextlast;
if (nextlast)
PREV_INSN (nextlast) = prevfirst;
SET_PREV_INSN (nextlast) = prevfirst;
else
set_last_insn (prevfirst);
if (!prevfirst)
Expand Down Expand Up @@ -3650,32 +3650,32 @@ fixup_reorder_chain (void)
if (BB_HEADER (bb))
{
if (insn)
NEXT_INSN (insn) = BB_HEADER (bb);
SET_NEXT_INSN (insn) = BB_HEADER (bb);
else
set_first_insn (BB_HEADER (bb));
PREV_INSN (BB_HEADER (bb)) = insn;
SET_PREV_INSN (BB_HEADER (bb)) = insn;
insn = BB_HEADER (bb);
while (NEXT_INSN (insn))
insn = NEXT_INSN (insn);
}
if (insn)
NEXT_INSN (insn) = BB_HEAD (bb);
SET_NEXT_INSN (insn) = BB_HEAD (bb);
else
set_first_insn (BB_HEAD (bb));
PREV_INSN (BB_HEAD (bb)) = insn;
SET_PREV_INSN (BB_HEAD (bb)) = insn;
insn = BB_END (bb);
if (BB_FOOTER (bb))
{
NEXT_INSN (insn) = BB_FOOTER (bb);
PREV_INSN (BB_FOOTER (bb)) = insn;
SET_NEXT_INSN (insn) = BB_FOOTER (bb);
SET_PREV_INSN (BB_FOOTER (bb)) = insn;
while (NEXT_INSN (insn))
insn = NEXT_INSN (insn);
}
}

NEXT_INSN (insn) = cfg_layout_function_footer;
SET_NEXT_INSN (insn) = cfg_layout_function_footer;
if (cfg_layout_function_footer)
PREV_INSN (cfg_layout_function_footer) = insn;
SET_PREV_INSN (cfg_layout_function_footer) = insn;

while (NEXT_INSN (insn))
insn = NEXT_INSN (insn);
Expand Down Expand Up @@ -4410,15 +4410,15 @@ cfg_layout_delete_block (basic_block bb)
{
next = BB_HEAD (bb);
if (prev)
NEXT_INSN (prev) = BB_HEADER (bb);
SET_NEXT_INSN (prev) = BB_HEADER (bb);
else
set_first_insn (BB_HEADER (bb));
PREV_INSN (BB_HEADER (bb)) = prev;
SET_PREV_INSN (BB_HEADER (bb)) = prev;
insn = BB_HEADER (bb);
while (NEXT_INSN (insn))
insn = NEXT_INSN (insn);
NEXT_INSN (insn) = next;
PREV_INSN (next) = insn;
SET_NEXT_INSN (insn) = next;
SET_PREV_INSN (next) = insn;
}
next = NEXT_INSN (BB_END (bb));
if (BB_FOOTER (bb))
Expand All @@ -4429,11 +4429,11 @@ cfg_layout_delete_block (basic_block bb)
if (BARRIER_P (insn))
{
if (PREV_INSN (insn))
NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
else
SET_BB_FOOTER (bb) = NEXT_INSN (insn);
if (NEXT_INSN (insn))
PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
}
if (LABEL_P (insn))
break;
Expand All @@ -4442,13 +4442,13 @@ cfg_layout_delete_block (basic_block bb)
if (BB_FOOTER (bb))
{
insn = BB_END (bb);
NEXT_INSN (insn) = BB_FOOTER (bb);
PREV_INSN (BB_FOOTER (bb)) = insn;
SET_NEXT_INSN (insn) = BB_FOOTER (bb);
SET_PREV_INSN (BB_FOOTER (bb)) = insn;
while (NEXT_INSN (insn))
insn = NEXT_INSN (insn);
NEXT_INSN (insn) = next;
SET_NEXT_INSN (insn) = next;
if (next)
PREV_INSN (next) = insn;
SET_PREV_INSN (next) = insn;
else
set_last_insn (insn);
}
Expand All @@ -4475,9 +4475,9 @@ cfg_layout_delete_block (basic_block bb)
insn = remaints;
while (NEXT_INSN (insn))
insn = NEXT_INSN (insn);
NEXT_INSN (insn) = *to;
SET_NEXT_INSN (insn) = *to;
if (*to)
PREV_INSN (*to) = insn;
SET_PREV_INSN (*to) = insn;
*to = remaints;
}
}
Expand Down Expand Up @@ -4573,8 +4573,8 @@ cfg_layout_merge_blocks (basic_block a, basic_block b)

while (NEXT_INSN (last))
last = NEXT_INSN (last);
NEXT_INSN (last) = BB_FOOTER (b);
PREV_INSN (BB_FOOTER (b)) = last;
SET_NEXT_INSN (last) = BB_FOOTER (b);
SET_PREV_INSN (BB_FOOTER (b)) = last;
}
SET_BB_FOOTER (b) = NULL;
}
Expand All @@ -4592,8 +4592,8 @@ cfg_layout_merge_blocks (basic_block a, basic_block b)

while (NEXT_INSN (last))
last = NEXT_INSN (last);
NEXT_INSN (last) = BB_FOOTER (a);
PREV_INSN (BB_FOOTER (a)) = last;
SET_NEXT_INSN (last) = BB_FOOTER (a);
SET_PREV_INSN (BB_FOOTER (a)) = last;
SET_BB_FOOTER (a) = BB_HEADER (b);
}
SET_BB_HEADER (b) = NULL;
Expand Down
4 changes: 2 additions & 2 deletions gcc/combine.c
Original file line number Diff line number Diff line change
Expand Up @@ -2420,11 +2420,11 @@ update_cfg_for_uncondjump (rtx insn)
if (BARRIER_P (insn))
{
if (PREV_INSN (insn))
NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
else
SET_BB_FOOTER (bb) = NEXT_INSN (insn);
if (NEXT_INSN (insn))
PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
}
else if (LABEL_P (insn))
break;
Expand Down
14 changes: 7 additions & 7 deletions gcc/config/bfin/bfin.c
Original file line number Diff line number Diff line change
Expand Up @@ -4058,10 +4058,10 @@ reorder_var_tracking_notes (void)
while (queue)
{
rtx next_queue = PREV_INSN (queue);
PREV_INSN (NEXT_INSN (insn)) = queue;
NEXT_INSN (queue) = NEXT_INSN (insn);
NEXT_INSN (insn) = queue;
PREV_INSN (queue) = insn;
SET_PREV_INSN (NEXT_INSN (insn)) = queue;
SET_NEXT_INSN (queue) = NEXT_INSN (insn);
SET_NEXT_INSN (insn) = queue;
SET_PREV_INSN (queue) = insn;
queue = next_queue;
}
in_bundle = false;
Expand All @@ -4074,10 +4074,10 @@ reorder_var_tracking_notes (void)
if (in_bundle)
{
rtx prev = PREV_INSN (insn);
PREV_INSN (next) = prev;
NEXT_INSN (prev) = next;
SET_PREV_INSN (next) = prev;
SET_NEXT_INSN (prev) = next;

PREV_INSN (insn) = queue;
SET_PREV_INSN (insn) = queue;
queue = insn;
}
}
Expand Down
Loading

0 comments on commit 4a57a2e

Please sign in to comment.