diff options
author | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-19 19:19:13 +0000 |
---|---|---|
committer | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-19 19:19:13 +0000 |
commit | c86d86fffe04e33c7ac084e575b0298069b8e8f8 (patch) | |
tree | 25dcbcad495942e5f4d89b95ad979a56367bd84f /gcc/cfgbuild.c | |
parent | 78bf41568c66b61419865b36f101121c8f5918a5 (diff) | |
download | gcc-c86d86fffe04e33c7ac084e575b0298069b8e8f8.tar.gz |
Make tablejump_p accept a rtx_jump_table_data **
2014-08-19 David Malcolm <dmalcolm@redhat.com>
* rtl.h (tablejump_p): Strengthen third param from rtx * to
rtx_jump_table_data **.
* cfgbuild.c (make_edges): Introduce local "table", using it in
place of "tmp" for jump table data.
(find_bb_boundaries): Strengthen local "table" from rtx to
rtx_jump_table_data *.
* cfgcleanup.c (merge_blocks_move_successor_nojumps): Likewise.
(outgoing_edges_match): Likewise for locals "table1" and "table2".
(try_crossjump_to_edge): Likewise.
* cfgrtl.c (try_redirect_by_replacing_jump): Likewise for local
"table".
(patch_jump_insn): Introduce local "table", using it in place of
"tmp" for jump table data.
(force_nonfallthru_and_redirect): Introduce local "table", so that
call to tablejump_p can receive an rtx_jump_table_data **. Update
logic around the call to overwrite "note" appropriately if
tablejump_p returns non-zero.
(get_last_bb_insn): Introduce local "table", using it in place of
"tmp" for jump table data.
* dwarf2cfi.c (create_trace_edges): Likewise.
* config/arm/arm.c (get_jump_table_size): Strengthen param "insn"
from rtx to rtx_jump_table_data *.
(create_fix_barrier): Strengthen local "tmp" from rtx to
rtx_jump_table_data *.
(arm_reorg): Likewise for local "table".
* config/s390/s390.c (s390_chunkify_start): Likewise.
* config/spu/spu.c (spu_emit_branch_hint): Likewise.
* jump.c (delete_related_insns): Strengthen local "lab_next" from
rtx to rtx_jump_table_data *.
* rtlanal.c (tablejump_p): Strengthen param "tablep" from rtx * to
rtx_jump_table_data **. Add a checked cast when writing through
the pointer: we know there that local "table" is non-NULL and that
JUMP_TABLE_DATA_P (table) holds.
(label_is_jump_target_p): Introduce local "table", using it in
place of "tmp" for jump table data.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214184 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgbuild.c')
-rw-r--r-- | gcc/cfgbuild.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c index 76d3a99a8ed..848e13f51ab 100644 --- a/gcc/cfgbuild.c +++ b/gcc/cfgbuild.c @@ -252,6 +252,7 @@ make_edges (basic_block min, basic_block max, int update_p) if (code == JUMP_INSN) { rtx tmp; + rtx_jump_table_data *table; /* Recognize a non-local goto as a branch outside the current function. */ @@ -259,15 +260,15 @@ make_edges (basic_block min, basic_block max, int update_p) ; /* Recognize a tablejump and do the right thing. */ - else if (tablejump_p (insn, NULL, &tmp)) + else if (tablejump_p (insn, NULL, &table)) { rtvec vec; int j; - if (GET_CODE (PATTERN (tmp)) == ADDR_VEC) - vec = XVEC (PATTERN (tmp), 0); + if (GET_CODE (PATTERN (table)) == ADDR_VEC) + vec = XVEC (PATTERN (table), 0); else - vec = XVEC (PATTERN (tmp), 1); + vec = XVEC (PATTERN (table), 1); for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j) make_label_edge (edge_cache, bb, @@ -444,7 +445,7 @@ find_bb_boundaries (basic_block bb) basic_block orig_bb = bb; rtx insn = BB_HEAD (bb); rtx end = BB_END (bb), x; - rtx table; + rtx_jump_table_data *table; rtx flow_transfer_insn = NULL_RTX; edge fallthru = NULL; |