re PR target/43920 (Choosing conditional execution over conditional branches for...
authorTom de Vries <tom@codesourcery.com>
Thu, 7 Apr 2011 08:10:34 +0000 (08:10 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Thu, 7 Apr 2011 08:10:34 +0000 (08:10 +0000)
commit472c95f5af0a86d073d305c2328acac19dd784bc
tree16eccafa75bb37f7b9b96e7f23c0feeb6c8d439b
parent7c16382a3ac63d118295dd2c039e4032738d2a60
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
gcc/ChangeLog
gcc/basic-block.h
gcc/cfgcleanup.c
gcc/ifcvt.c