gcc/ * 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. / * rtx-classes-status.txt: Add SET_BB_NOTE_LIST. --- gcc/sel-sched-ir.c | 19 +++++++++++++++---- gcc/sel-sched-ir.h | 3 ++- gcc/sel-sched.c | 4 ++-- rtx-classes-status.txt | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 18ffa6c..cb4682f 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -4625,7 +4625,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 @@ -4660,7 +4660,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)) @@ -5268,8 +5268,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; } @@ -6457,4 +6457,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 as_a_nullable <rtx_insn *> (note_list); +} + +rtx& SET_BB_NOTE_LIST (basic_block bb) +{ + return SEL_REGION_BB_INFO (bb)->note_list; +} + #endif diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h index 7aef287..81accaf 100644 --- a/gcc/sel-sched-ir.h +++ b/gcc/sel-sched-ir.h @@ -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) diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 1df2da0..c3e0cca 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -4592,8 +4592,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); diff --git a/rtx-classes-status.txt b/rtx-classes-status.txt index fe04611..e77e847 100644 --- a/rtx-classes-status.txt +++ b/rtx-classes-status.txt @@ -12,6 +12,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 -- 1.8.5.3