aboutsummaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
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/ifcvt.c
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/ifcvt.c')
-rw-r--r--gcc/ifcvt.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 3e26799..b34aee2 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -481,7 +481,8 @@ cond_exec_process_if_block (ce_if_block_t * ce_info,
/* Look for matching sequences at the head and tail of the two blocks,
and limit the range of insns to be converted if possible. */
n_matching = flow_find_cross_jump (then_bb, else_bb,
- &then_first_tail, &else_first_tail);
+ &then_first_tail, &else_first_tail,
+ NULL);
if (then_first_tail == BB_HEAD (then_bb))
then_start = then_end = NULL_RTX;
if (else_first_tail == BB_HEAD (else_bb))