mbox series

[0/7] Add ability to resolve unknowns to path solver.

Message ID 20210921165350.414593-1-aldyh@redhat.com
Headers show
Series Add ability to resolve unknowns to path solver. | expand

Message

Aldy Hernandez Sept. 21, 2021, 4:53 p.m. UTC
The default behavior for the path solver is to resort to VARYING when
the range for a requested SSA is outside the given path.  This is both
cheap and fast, but fails to get a significant amount of ranges that
traditionally the DOM and VRP threaders got.

This patchset improves the path solver such that any names outside the
given path are resolved with the ranger.  It also adds the ability to
resolve relations ocurring both within and without the path.

This functionality is turned off by default.  It will be used by the
hybrid VRP threader replacement, as well as by the backward threader
when it becomes the only threader in town.

This entire patchset has been bootstrapped and tested on x86-64 Linux,
both alone, and along with upcoming patches to the threader and VRP.

Committing to trunk.
Aldy

Aldy Hernandez (7):
  Allocate non_null_ref tables at creation.
  Do not query SCEV in range_of_phi unless dominators are available.
  Move postfold_gcond_edges into fur_source.
  path solver: Add relation support.
  path solver: Remove useless code.
  path solver: Add related SSAs to solvable set.
  path solver: Use ranger to solve unknowns.

 gcc/gimple-range-cache.cc     |   4 +-
 gcc/gimple-range-fold.cc      |  48 ++---
 gcc/gimple-range-fold.h       |   4 +-
 gcc/gimple-range-path.cc      | 375 +++++++++++++++++++++++++++++++---
 gcc/gimple-range-path.h       |  20 +-
 gcc/tree-ssa-threadbackward.c |   2 +-
 6 files changed, 396 insertions(+), 57 deletions(-)