diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-17 08:10:24 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-17 08:10:24 +0000 |
commit | 7e0311aec8e6ab97a323f24623f2d0da6bb2d779 (patch) | |
tree | 7157094906e2791038cab066565c2c9b9c4e3104 /gcc/cfgloopmanip.c | |
parent | 0561623326dda191b9fc4f21bfb6f4148a5ddde8 (diff) | |
download | gcc-7e0311aec8e6ab97a323f24623f2d0da6bb2d779.tar.gz |
* tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
(execute_vrp): Preserve loops through jump threading.
* tree-ssa-threadupdate.c (thread_single_edge,
dbds_continue_enumeration_p, determine_bb_domination_status,
thread_through_loop_header): New functions.
(create_edge_and_update_destination_phis,
create_edge_and_update_destination_phis): Set loops for the new blocks.
(prune_undesirable_thread_requests): Removed.
(redirect_edges): Do not pretend that redirect_edge_and_branch can
create new blocks.
(thread_block): Do not call prune_undesirable_thread_requests.
Update loops.
(mark_threaded_blocks): Select edges to thread here.
(thread_through_all_blocks): Take may_peel_loop_headers argument.
Thread edges through loop headers independently.
* cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
* tree-pass.h (TODO_mark_first_instance): New.
(first_pass_instance): Declare.
* cfghooks.c (duplicate_block): Put the block to the original loop
if copy is not specified.
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
jump threading. Pass may_peel_loop_headers to
thread_through_all_blocks according to first_pass_instance.
* cfgloop.h (create_preheader): Declare.
* tree-flow.h (thread_through_all_blocks): Declaration changed.
* basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
* passes.c (first_pass_instance): New variable.
(next_pass_1): Set TODO_mark_first_instance.
(execute_todo): Set first_pass_instance.
* gcc.dg/tree-ssa/ssa-dom-thread-2.c: New test.
* gcc.dg/vect/vect-102.c, gcc.dg/vect/vect-103.c,
gcc.dg/vect/vect-104.c: Use more complex construction to prevent vectorizing.
* gcc.dg/tree-ssa/pr21559.c: Update outcome.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124786 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgloopmanip.c')
-rw-r--r-- | gcc/cfgloopmanip.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index 4c658df876b..1fadbb4356d 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -41,7 +41,6 @@ static int find_path (edge, basic_block **); static void fix_loop_placements (struct loop *, bool *); static bool fix_bb_placement (basic_block); static void fix_bb_placements (basic_block, bool *); -static basic_block create_preheader (struct loop *, int); static void unloop (struct loop *, bool *); #define RDIV(X,Y) (((X) + (Y) / 2) / (Y)) @@ -1085,8 +1084,8 @@ duplicate_loop_to_header_edge (struct loop *loop, edge e, MFB_KJ_EDGE to the entry part. E is the edge for that we should decide whether to redirect it. */ -static edge mfb_kj_edge; -static bool +edge mfb_kj_edge; +bool mfb_keep_just (edge e) { return e != mfb_kj_edge; @@ -1097,7 +1096,7 @@ mfb_keep_just (edge e) entry; otherwise we also force preheader block to have only one successor. The function also updates dominators. */ -static basic_block +basic_block create_preheader (struct loop *loop, int flags) { edge e, fallthru; |