diff options
author | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-10-16 14:10:27 +0000 |
---|---|---|
committer | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-10-16 14:10:27 +0000 |
commit | 8aa29a92298856c18c6084e7681a33b7c2003544 (patch) | |
tree | a695dca7dea0c4336ee8e7fd6508412c13a283ec | |
parent | b692d24f0f7c5476c185df194371467824ad0cb5 (diff) |
Dump GORI map when asserting value_ranges are equal.ranger
Add dump functions for assert_info struct.
Add debug(gori_map&) dump routine.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ranger@277066 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/gimple-range-gori.cc | 6 | ||||
-rw-r--r-- | gcc/gimple-ssa-evrp-analyze.c | 17 | ||||
-rw-r--r-- | gcc/gimple-ssa-evrp-analyze.h | 3 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 35 | ||||
-rw-r--r-- | gcc/vr-values.c | 2 |
5 files changed, 59 insertions, 4 deletions
diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc index d7f03f77f75..9d83e87f711 100644 --- a/gcc/gimple-range-gori.cc +++ b/gcc/gimple-range-gori.cc @@ -475,6 +475,12 @@ gori_map::dump(FILE *f) } } +DEBUG_FUNCTION void +debug (gori_map &g) +{ + g.dump (stderr); +} + // Return the legacy global known value for NAME in R. void diff --git a/gcc/gimple-ssa-evrp-analyze.c b/gcc/gimple-ssa-evrp-analyze.c index f341f3cb5ad..ab9b30e1fd2 100644 --- a/gcc/gimple-ssa-evrp-analyze.c +++ b/gcc/gimple-ssa-evrp-analyze.c @@ -158,7 +158,8 @@ void evrp_range_analyzer::assert_value_ranges_are_equal (tree name, edge e, const value_range_base *vr_old, - const value_range_base *vr_new) + const value_range_base *vr_new, + const vec<assert_info> &asserts) { // VRP couldn't get anything at all. if (!vr_old) @@ -180,9 +181,18 @@ evrp_range_analyzer::assert_value_ranges_are_equal fprintf (stderr, "\n\n"); dump_bb (stderr, e->src, 0, TDF_NONE); fprintf (stderr, "\n"); - vr_values->dump_all_value_ranges (stderr); fprintf (stderr, "==============================================\n"); debug_function (current_function_decl, TDF_NONE); + fprintf (stderr, "Equivalences and known value_ranges:\n"); + fprintf (stderr, "------------------------------------\n"); + vr_values->dump_all_value_ranges (stderr); + if (asserts.length () > 0) + { + fprintf (stderr, "\nASSERT equivalences:\n"); + fprintf (stderr, "--------------------------\n"); + extern void debug (const vec<assert_info> &); + debug (asserts); + } gcc_unreachable (); } } @@ -240,7 +250,8 @@ evrp_range_analyzer::record_ranges_from_incoming_edge (basic_block bb) vrs.safe_push (std::make_pair (asserts[i].name, vr)); if (getenv("GORIME")) - assert_value_ranges_are_equal (name, pred_e, vr, &vr_new); + assert_value_ranges_are_equal (name, pred_e, vr, &vr_new, + asserts); } /* If pred_e is really a fallthru we can record value ranges diff --git a/gcc/gimple-ssa-evrp-analyze.h b/gcc/gimple-ssa-evrp-analyze.h index e80c7f8a8b0..e8b69796882 100644 --- a/gcc/gimple-ssa-evrp-analyze.h +++ b/gcc/gimple-ssa-evrp-analyze.h @@ -69,7 +69,8 @@ class evrp_range_analyzer void set_ssa_range_info (tree, value_range *); void assert_value_ranges_are_equal (tree, edge, const value_range_base *, - const value_range_base *); + const value_range_base *, + const vec<assert_info> &); /* STACK holds the old VR. */ auto_vec<std::pair <tree, value_range *> > stack; diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 41017ce0f37..56211a06838 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -2028,6 +2028,41 @@ void debug_asserts_for (tree); void dump_all_asserts (FILE *); void debug_all_asserts (void); +void +dump_assert_info (FILE *file, const assert_info &assert) +{ + fprintf (file, "Assert for: "); + print_generic_expr (file, assert.name); + fprintf (file, "\n\tPREDICATE: expr=["); + print_generic_expr (file, assert.expr); + fprintf (file, "] %s ", get_tree_code_name (assert.comp_code)); + fprintf (file, "val=["); + print_generic_expr (file, assert.val); + fprintf (file, "]\n\n"); +} + +void +dump_asserts_info (FILE *file, const vec<assert_info> &asserts) +{ + for (unsigned i = 0; i < asserts.length (); ++i) + { + dump_assert_info (file, asserts[i]); + fprintf (file, "\n"); + } +} + +DEBUG_FUNCTION void +debug (const assert_info &assert) +{ + dump_assert_info (stderr, assert); +} + +DEBUG_FUNCTION void +debug (const vec<assert_info> &asserts) +{ + dump_asserts_info (stderr, asserts); +} + /* Dump all the registered assertions for NAME to FILE. */ void diff --git a/gcc/vr-values.c b/gcc/vr-values.c index 61e719af0f2..493b143471a 100644 --- a/gcc/vr-values.c +++ b/gcc/vr-values.c @@ -1952,6 +1952,8 @@ vr_values::dump_all_value_ranges (FILE *file) } fprintf (file, "\n"); + fprintf (file, "GORI map:\n"); + m_gori_map.dump (file); } /* Initialize VRP lattice. */ |