[PATCH][PR tree-optimization/67816] Fix jump threading when DOM removes conditionals...
authorJeff Law <law@redhat.com>
Wed, 7 Oct 2015 02:25:57 +0000 (20:25 -0600)
committerJeff Law <law@gcc.gnu.org>
Wed, 7 Oct 2015 02:25:57 +0000 (20:25 -0600)
commit00852255e4a0d3b67ed853aacbc4aa4f4dfe724a
tree38f2371bdfbd8f8e7bf213eb5d5aa9aa8733c0f7
parent165ccc545563b5899a4e8256933b8955914f988b
[PATCH][PR tree-optimization/67816] Fix jump threading when DOM removes conditionals in jump threading path

PR tree-optimization/67816
* tree-ssa-threadupdate.h (remove_jump_threads_including): Renamed
from remove_jump_threads_starting_at.  Accept an edge rather than
a basic block.
* tree-ssa-threadupdate.c (removed_edges): New hash table.
(remove_jump_threads_including): Note edges that get removed from
the CFG for later pruning of jump threading paths including them.
(thread_through_all_blocks): Remove paths which include edges that
have been removed.
* tree-ssa-dom.c (optimize_stmt): Call remove_jump_threads_including
on each outgoing edges when optimizing away a control statement.

* gcc.c-torture/compile/pr67816.c: New test.

From-SVN: r228559
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr67816.c [new file with mode: 0644]
gcc/tree-ssa-dom.c
gcc/tree-ssa-threadupdate.c
gcc/tree-ssa-threadupdate.h