aboutsummaryrefslogtreecommitdiff
path: root/gcc/basic-block.h
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2011-04-07 08:10:34 +0000
committerTom de Vries <vries@gcc.gnu.org>2011-04-07 08:10:34 +0000
commit472c95f5af0a86d073d305c2328acac19dd784bc (patch)
tree16eccafa75bb37f7b9b96e7f23c0feeb6c8d439b /gcc/basic-block.h
parent7c16382a3ac63d118295dd2c039e4032738d2a60 (diff)
downloadgcc-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.h5
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);