diff options
author | David Malcolm <dmalcolm@redhat.com> | 2014-08-19 16:00:59 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2014-08-19 16:00:59 +0000 |
commit | c2fc1aee966c9b65eb36b77b2087f76fa3fbe410 (patch) | |
tree | 40b0cac54f1e679a9fa754cd12c4b470e4479066 /gcc | |
parent | 3f4f5c9ad5536025c531a8702af9254ffe97a0ca (diff) | |
download | gcc-c2fc1aee966c9b65eb36b77b2087f76fa3fbe410.zip gcc-c2fc1aee966c9b65eb36b77b2087f76fa3fbe410.tar.gz gcc-c2fc1aee966c9b65eb36b77b2087f76fa3fbe410.tar.bz2 |
BB_NOTE_LIST scaffolding
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.
From-SVN: r214167
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 18 | ||||
-rw-r--r-- | gcc/sel-sched-ir.c | 19 | ||||
-rw-r--r-- | gcc/sel-sched-ir.h | 3 | ||||
-rw-r--r-- | gcc/sel-sched.c | 4 |
4 files changed, 37 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5644066..2d0e649 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,23 @@ 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" field will eventually be an rtx_insn *. To help with transition, for now, convert from an access macro into a pair of functions: diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index f5e0d55..9165649 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -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 @@ -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)) @@ -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; } @@ -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 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 7b3c433..2d9bc81 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -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); |