Skip to content

Commit

Permalink
BB_NOTE_LIST scaffolding
Browse files Browse the repository at this point in the history
gcc/
2014-08-19  David Malcolm  <dmalcolm@redhat.com>

	* sel-sched-ir.h (BB_NOTE_LIST): struct sel_region_bb_info_def's
	"note_list" field will eventually be an rtx_insn *.  To help with
	transition, for now, convert from an access macro into a pair of
	functions: BB_NOTE_LIST, returning an rtx_insn *, and...
	(SET_BB_NOTE_LIST): New function, for use where BB_NOTE_LIST is
	used as an lvalue.

	* sel-sched.c (create_block_for_bookkeeping): Update lvalue usage
	of BB_NOTE_LIST to SET_BB_NOTE_LIST.

	* sel-sched-ir.c (init_bb): Likewise.
	(sel_restore_notes): Likewise.
	(move_bb_info): Likewise.
	(BB_NOTE_LIST): New function, adding a checked cast to rtx_insn *.
	(SET_BB_NOTE_LIST): New function.

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

	* rtx-classes-status.txt (TODO): Add SET_BB_NOTE_LIST.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214167 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
dmalcolm committed Aug 19, 2014
1 parent d87a26d commit 1761671
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 7 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 (TODO): Add SET_BB_NOTE_LIST.

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

* rtx-classes-status.txt (TODO): Add SET_VINSN_INSN_RTX.
Expand Down
18 changes: 18 additions & 0 deletions gcc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
2014-08-19 David Malcolm <dmalcolm@redhat.com>

* sel-sched-ir.h (BB_NOTE_LIST): struct sel_region_bb_info_def's
"note_list" field will eventually be an rtx_insn *. To help with
transition, for now, convert from an access macro into a pair of
functions: BB_NOTE_LIST, returning an rtx_insn *, and...
(SET_BB_NOTE_LIST): New function, for use where BB_NOTE_LIST is
used as an lvalue.

* sel-sched.c (create_block_for_bookkeeping): Update lvalue usage
of BB_NOTE_LIST to SET_BB_NOTE_LIST.

* sel-sched-ir.c (init_bb): Likewise.
(sel_restore_notes): Likewise.
(move_bb_info): Likewise.
(BB_NOTE_LIST): New function, adding a checked cast to rtx_insn *.
(SET_BB_NOTE_LIST): New function.

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

* sel-sched-ir.h (VINSN_INSN_RTX): struct vinsn_def's "insn_rtx"
Expand Down
19 changes: 15 additions & 4 deletions gcc/sel-sched-ir.c
Original file line number Diff line number Diff line change
Expand Up @@ -4620,7 +4620,7 @@ static void
init_bb (basic_block bb)
{
remove_notes (bb_note (bb), BB_END (bb));
BB_NOTE_LIST (bb) = note_list;
SET_BB_NOTE_LIST (bb) = note_list;
}

void
Expand Down Expand Up @@ -4655,7 +4655,7 @@ sel_restore_notes (void)
{
note_list = BB_NOTE_LIST (first);
restore_other_notes (NULL, first);
BB_NOTE_LIST (first) = NULL_RTX;
SET_BB_NOTE_LIST (first) = NULL_RTX;

FOR_BB_INSNS (first, insn)
if (NONDEBUG_INSN_P (insn))
Expand Down Expand Up @@ -5263,8 +5263,8 @@ move_bb_info (basic_block merge_bb, basic_block empty_bb)
{
if (in_current_region_p (merge_bb))
concat_note_lists (BB_NOTE_LIST (empty_bb),
&BB_NOTE_LIST (merge_bb));
BB_NOTE_LIST (empty_bb) = NULL_RTX;
&SET_BB_NOTE_LIST (merge_bb));
SET_BB_NOTE_LIST (empty_bb) = NULL_RTX;

}

Expand Down Expand Up @@ -6452,4 +6452,15 @@ rtx& SET_VINSN_INSN_RTX (vinsn_t vi)
return vi->insn_rtx;
}

rtx_insn *BB_NOTE_LIST (basic_block bb)
{
rtx note_list = SEL_REGION_BB_INFO (bb)->note_list;
return safe_as_a <rtx_insn *> (note_list);
}

rtx& SET_BB_NOTE_LIST (basic_block bb)
{
return SEL_REGION_BB_INFO (bb)->note_list;
}

#endif
3 changes: 2 additions & 1 deletion gcc/sel-sched-ir.h
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,8 @@ extern vec<sel_region_bb_info_def> sel_region_bb_info;
A note_list is a list of various notes that was scattered across BB
before scheduling, and will be appended at the beginning of BB after
scheduling is finished. */
#define BB_NOTE_LIST(BB) (SEL_REGION_BB_INFO (BB)->note_list)
extern rtx_insn *BB_NOTE_LIST (basic_block);
extern rtx& SET_BB_NOTE_LIST (basic_block);

#define BB_AV_SET(BB) (SEL_REGION_BB_INFO (BB)->av_set)
#define BB_AV_LEVEL(BB) (SEL_REGION_BB_INFO (BB)->av_level)
Expand Down
4 changes: 2 additions & 2 deletions gcc/sel-sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -4585,8 +4585,8 @@ create_block_for_bookkeeping (edge e1, edge e2)

/* Move note_list from the upper bb. */
gcc_assert (BB_NOTE_LIST (new_bb) == NULL_RTX);
BB_NOTE_LIST (new_bb) = BB_NOTE_LIST (bb);
BB_NOTE_LIST (bb) = NULL_RTX;
SET_BB_NOTE_LIST (new_bb) = BB_NOTE_LIST (bb);
SET_BB_NOTE_LIST (bb) = NULL_RTX;

gcc_assert (e2->dest == bb);

Expand Down
1 change: 1 addition & 0 deletions rtx-classes-status.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ TODO: "Scaffolding" to be removed
=================================
* DF_REF_INSN
* SET_BB_HEAD, SET_BB_END, SET_BB_HEADER, SET_BB_FOOTER
* SET_BB_NOTE_LIST
* SET_DEP_PRO, SET_DEP_CON
* SET_NEXT_INSN, SET_PREV_INSN
* SET_VINSN_INSN_RTX

0 comments on commit 1761671

Please sign in to comment.