aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>2019-10-16 14:10:27 +0000
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>2019-10-16 14:10:27 +0000
commit8aa29a92298856c18c6084e7681a33b7c2003544 (patch)
treea695dca7dea0c4336ee8e7fd6508412c13a283ec
parentb692d24f0f7c5476c185df194371467824ad0cb5 (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.cc6
-rw-r--r--gcc/gimple-ssa-evrp-analyze.c17
-rw-r--r--gcc/gimple-ssa-evrp-analyze.h3
-rw-r--r--gcc/tree-vrp.c35
-rw-r--r--gcc/vr-values.c2
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. */