Add Early VRP

Programming / Compilers / GCC - kugan [138bc75d-0d04-0410-961f-82ee72b054a4] - 20 September 2016 18:23 UTC

gcc/ChangeLog:

2016-09-21 Kugan Vivekanandarajah

- doc/invoke.texi: Document -fdump-tree-evrp.
- passes.def: Define new pass_early_vrp.
- timevar.def: Define new TV_TREE_EARLY_VRP.
- tree-pass.h (make_pass_early_vrp): New.
- tree-ssa-propagate.c: Make replace_uses_in non static.
- tree-ssa-propagate.h: Export replace_uses_in.
- tree-vrp.c (extract_range_for_var_from_comparison_expr): New. (extract_range_from_assert): Factor out extract_range_for_var_from_comparison_expr. (vrp_initialize_lattice): New. (vrp_initialize): Factor out vrp_initialize_lattice. (vrp_valueize): Fix it to reject complex value ranges. (vrp_free_lattice): New. (evrp_dom_walker::before_dom_children): Likewise. (evrp_dom_walker::after_dom_children): Likewise. (evrp_dom_walker::push_value_range): Likewise. (evrp_dom_walker::pop_value_range): Likewise. (execute_early_vrp): Likewise. (execute_vrp): Call vrp_initialize_lattice and
vrp_free_lattice. (make_pass_early_vrp): New.


gcc/testsuite/ChangeLog:

2016-09-21 Kugan Vivekanandarajah

- g++.dg/tree-ssa/pr31146-2.C: Run with -fno-tree-evrp as evrp also does the same transformation.
- g++.dg/warn/pr33738.C: XFAIL as optimization now happens in ccp.
- gcc.dg/tree-ssa/evrp1.c: New test.
- gcc.dg/tree-ssa/evrp2.c: New test.
- gcc.dg/tree-ssa/evrp3.c: New test.
- gcc.dg/tree-ssa/pr20657.c: Check for the pattern in evrp dump.
- gcc.dg/tree-ssa/pr22117.c: Likewise.
- gcc.dg/tree-ssa/pr61839_2.c: Likewise.
- gcc.dg/tree-ssa/pr64130.c: Likewise.
- gcc.dg/tree-ssa/pr37508.c: Change the pattern to be checked as foling now happens early.
- gcc.dg/tree-ssa/vrp04.c: Likewise.
- gcc.dg/tree-ssa/vrp06.c: Likewise.
- gcc.dg/tree-ssa/vrp16.c: Likewise.
- gcc.dg/tree-ssa/vrp25.c: Likewise.
- gcc.dg/tree-ssa/vrp67.c: Likewise.

6e93da1 Add Early VRP
gcc/ChangeLog | 24 ++
gcc/doc/invoke.texi | 5 +
gcc/passes.def | 1 +
gcc/testsuite/ChangeLog | 20 ++
gcc/testsuite/g++.dg/tree-ssa/pr31146-2.C | 2 +-
gcc/testsuite/g++.dg/warn/pr33738.C | 4 +-
gcc/testsuite/gcc.dg/tree-ssa/evrp1.c | 13 +
gcc/testsuite/gcc.dg/tree-ssa/evrp2.c | 18 ++
gcc/testsuite/gcc.dg/tree-ssa/evrp3.c | 15 +
gcc/testsuite/gcc.dg/tree-ssa/pr20657.c | 4 +-
gcc/testsuite/gcc.dg/tree-ssa/pr22117.c | 2 +-
gcc/testsuite/gcc.dg/tree-ssa/pr37508.c | 2 +-
gcc/testsuite/gcc.dg/tree-ssa/pr61839_2.c | 8 +-
gcc/testsuite/gcc.dg/tree-ssa/pr64130.c | 6 +-
gcc/testsuite/gcc.dg/tree-ssa/vrp04.c | 2 +-
gcc/testsuite/gcc.dg/tree-ssa/vrp06.c | 4 +-
gcc/testsuite/gcc.dg/tree-ssa/vrp16.c | 4 +-
gcc/testsuite/gcc.dg/tree-ssa/vrp25.c | 4 +-
gcc/testsuite/gcc.dg/tree-ssa/vrp67.c | 2 +-
gcc/timevar.def | 1 +
gcc/tree-pass.h | 1 +
gcc/tree-ssa-propagate.c | 2 +-
gcc/tree-ssa-propagate.h | 1 +
gcc/tree-vrp.c | 467 +++++++++++++++++++++++++----
24 files changed, 536 insertions(+), 76 deletions(-)

Upstream: gcc.gnu.org


  • Share