PR tree-optimization/83298
commit4b69806cb5c74c4ed76275e6297cfe0db8efba0c
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Dec 2017 22:46:46 +0000 (12 22:46 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Dec 2017 22:46:46 +0000 (12 22:46 +0000)
treee41c0f11f99141ab8639d901936689c17b09a152
parent9bc12c64e05daeafc0fc88105f4683dc247655a8
PR tree-optimization/83298
PR tree-optimization/83362
PR tree-optimization/83383
* gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
push_value_range a public interface.  Add new argument to
record_ranges_from_stmt.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
Update comments.  Handle recording temporary equivalences.
* tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
* tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
gimple-ssa-evrp-analyze.h.
(record_temporary_equivalences_from_phis): Add new argument.  When
the PHI arg is an SSA_NAME, set the result's range to the range
of the PHI arg.
(record_temporary_equivalences_from_stmts_at_dest): Record ranges
from statements too.
(thread_through_normal_block): Accept new argument, evrp_range_analyzer.
Pass it down to children as needed.
(thread_outgoing_edges): Likewise.
(thread_across_edge): Likewise.   Push/pop range state as needed.
* tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.

PR tree-optimization/83298
PR tree-optimization/83362
PR tree-optimization/83383
* gcc.c-torture/execute/pr83298.c: New test.
* gcc.c-torture/execute/pr83362.c New test.
* gcc.c-torture/execute/pr83383.c New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255593 138bc75d-0d04-0410-961f-82ee72b054a4
12 files changed:
gcc/ChangeLog
gcc/gimple-ssa-evrp-analyze.c
gcc/gimple-ssa-evrp-analyze.h
gcc/gimple-ssa-evrp.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr83298.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/pr83362.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/pr83383.c [new file with mode: 0644]
gcc/tree-ssa-dom.c
gcc/tree-ssa-threadedge.c
gcc/tree-ssa-threadedge.h
gcc/tree-vrp.c