diff options
author | Tom de Vries <tom@codesourcery.com> | 2011-04-07 08:10:34 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2011-04-07 08:10:34 +0000 |
commit | 472c95f5af0a86d073d305c2328acac19dd784bc (patch) | |
tree | 16eccafa75bb37f7b9b96e7f23c0feeb6c8d439b /gcc/basic-block.h | |
parent | 7c16382a3ac63d118295dd2c039e4032738d2a60 (diff) | |
download | gcc-472c95f5af0a86d073d305c2328acac19dd784bc.zip gcc-472c95f5af0a86d073d305c2328acac19dd784bc.tar.gz gcc-472c95f5af0a86d073d305c2328acac19dd784bc.tar.bz2 |
re PR target/43920 (Choosing conditional execution over conditional branches for code size in some cases.)
2011-04-07 Tom de Vries <tom@codesourcery.com>
PR target/43920
* cfgcleanup.c (equal_different_set_p, can_replace_by, merge_dir): New
function.
(old_insns_match_p): Change return type. Replace return false/true with
return dir_none/dir_both. Use can_replace_by.
(flow_find_cross_jump): Add dir_p parameter. Init replacement direction
from dir_p. Register replacement direction in dir, last_dir and
afterlast_dir. Handle new return type of old_insns_match_p using
merge_dir. Return replacement direction in dir_p.
(flow_find_head_matching_sequence, outgoing_edges_match): Handle new
return type of old_insns_match_p.
(try_crossjump_to_edge): Add argument to call to flow_find_cross_jump.
* ifcvt.c ( cond_exec_process_if_block): Add argument to call to
flow_find_cross_jump.
* basic-block.h (enum replace_direction): New type.
(flow_find_cross_jump): Add parameter to declaration.
From-SVN: r172090
Diffstat (limited to 'gcc/basic-block.h')
-rw-r--r-- | gcc/basic-block.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 239c925..2791fbc 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -804,9 +804,12 @@ extern bool fixup_abnormal_edges (void); extern void find_many_sub_basic_blocks (sbitmap); extern void rtl_make_eh_edge (sbitmap, basic_block, rtx); +enum replace_direction { dir_none, dir_forward, dir_backward, dir_both }; + /* In cfgcleanup.c. */ extern bool cleanup_cfg (int); -extern int flow_find_cross_jump (basic_block, basic_block, rtx *, rtx *); +extern int flow_find_cross_jump (basic_block, basic_block, rtx *, rtx *, + enum replace_direction*); extern int flow_find_head_matching_sequence (basic_block, basic_block, rtx *, rtx *, int); |