PR tree-optimization/71437
commit57ee6051d932f5d9de13e6f19aa584f8cfa67bb0
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Mar 2017 19:21:33 +0000 (16 19:21 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Mar 2017 19:21:33 +0000 (16 19:21 +0000)
tree2015d481070a9147dbdeef1dd1ffd15cc2a515b3
parentbe244ef59a6b5497eb85a26cd368f389a78a4e7b
PR tree-optimization/71437
* tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
member function.  Implementation moved into after_dom_children
member function and into the threader's thread_outgoing_edges
function.
(dom_opt_dom_walker::after_dom_children): Simplify by moving
some code into new thread_outgoing_edges.
* tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
definition.  Simplify marker handling (do it here).   Assume we always
have the available expression and the const/copies tables.
(thread_outgoing_edges): New function extracted from tree-ssa-dom.c
and tree-vrp.c
* tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
* tree-vrp.c (equiv_stack): No longer file scoped.
(vrp_dom_walker): New class.
(vrp_dom_walker::before_dom_children): New member function.
(vrp_dom_walker::after_dom_children): Likewise.
(identify_jump_threads):  Setup domwalker.  Use it rather than
walking edges in a random order by hand.  Simplify setup/finalization.
(finalize_jump_threads): Remove.
(vrp_finalize): Do not call identify_jump_threads here.
(execute_vrp): Do it here instead and call thread_through_all_blocks
here too.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@246208 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/tree-ssa-dom.c
gcc/tree-ssa-threadedge.c
gcc/tree-ssa-threadedge.h
gcc/tree-vrp.c