aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2016-04-17 05:22:19 +0000
committerTom de Vries <vries@gcc.gnu.org>2016-04-17 05:22:19 +0000
commitc5e2d17df05391834d97d4ceaa1007af1d2fc038 (patch)
tree4080653010a4cc36867b96e8a8642620dbad4fc4 /gcc
parentda152c9f7bee5cd40dfcbb4511d882bd65a3d2ae (diff)
downloadgcc-c5e2d17df05391834d97d4ceaa1007af1d2fc038.zip
gcc-c5e2d17df05391834d97d4ceaa1007af1d2fc038.tar.gz
gcc-c5e2d17df05391834d97d4ceaa1007af1d2fc038.tar.bz2
Add debug_varinfo and debug_varmap
2016-04-17 Tom de Vries <tom@codesourcery.com> PR tree-optimization/70256 * tree-ssa-structalias.c (dump_varinfo, debug_varinfo, dump_varmap) (debug_varmap): New function. From-SVN: r235073
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-structalias.c108
2 files changed, 114 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1dfae40..23f04c2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2016-04-17 Tom de Vries <tom@codesourcery.com>
+ PR tree-optimization/70256
+ * tree-ssa-structalias.c (dump_varinfo, debug_varinfo, dump_varmap)
+ (debug_varmap): New function.
+
+2016-04-17 Tom de Vries <tom@codesourcery.com>
+
PR other/70183
* passes.c (pass_manager::register_pass): Propagate pflags.
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index bad1ea1..e88869f 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -682,6 +682,8 @@ void debug_constraints (void);
void debug_constraint_graph (void);
void debug_solution_for_var (unsigned int);
void debug_sa_points_to_info (void);
+void debug_varinfo (varinfo_t);
+void debug_varmap (void);
/* Print out constraint C to stderr. */
@@ -7496,6 +7498,112 @@ associate_varinfo_to_alias (struct cgraph_node *node, void *data)
return false;
}
+/* Dump varinfo VI to FILE. */
+
+static void
+dump_varinfo (FILE *file, varinfo_t vi)
+{
+ if (vi == NULL)
+ return;
+
+ fprintf (file, "%u: %s\n", vi->id, vi->name);
+
+ const char *sep = " ";
+ if (vi->is_artificial_var)
+ fprintf (file, "%sartificial", sep);
+ if (vi->is_special_var)
+ fprintf (file, "%sspecial", sep);
+ if (vi->is_unknown_size_var)
+ fprintf (file, "%sunknown-size", sep);
+ if (vi->is_full_var)
+ fprintf (file, "%sfull", sep);
+ if (vi->is_heap_var)
+ fprintf (file, "%sheap", sep);
+ if (vi->may_have_pointers)
+ fprintf (file, "%smay-have-pointers", sep);
+ if (vi->only_restrict_pointers)
+ fprintf (file, "%sonly-restrict-pointers", sep);
+ if (vi->is_restrict_var)
+ fprintf (file, "%sis-restrict-var", sep);
+ if (vi->is_global_var)
+ fprintf (file, "%sglobal", sep);
+ if (vi->is_ipa_escape_point)
+ fprintf (file, "%sipa-escape-point", sep);
+ if (vi->is_fn_info)
+ fprintf (file, "%sfn-info", sep);
+ if (vi->ruid)
+ fprintf (file, "%srestrict-uid:%u", sep, vi->ruid);
+ if (vi->next)
+ fprintf (file, "%snext:%u", sep, vi->next);
+ if (vi->head != vi->id)
+ fprintf (file, "%shead:%u", sep, vi->head);
+ if (vi->offset)
+ fprintf (file, "%soffset:" HOST_WIDE_INT_PRINT_DEC, sep, vi->offset);
+ if (vi->size != ~(unsigned HOST_WIDE_INT)0)
+ fprintf (file, "%ssize:" HOST_WIDE_INT_PRINT_DEC, sep, vi->size);
+ if (vi->fullsize != ~(unsigned HOST_WIDE_INT)0
+ && vi->fullsize != vi->size)
+ fprintf (file, "%sfullsize:" HOST_WIDE_INT_PRINT_DEC, sep,
+ vi->fullsize);
+ fprintf (file, "\n");
+
+ if (vi->solution && !bitmap_empty_p (vi->solution))
+ {
+ bitmap_iterator bi;
+ unsigned i;
+ fprintf (file, " solution: {");
+ EXECUTE_IF_SET_IN_BITMAP (vi->solution, 0, i, bi)
+ fprintf (file, " %u", i);
+ fprintf (file, " }\n");
+ }
+
+ if (vi->oldsolution && !bitmap_empty_p (vi->oldsolution)
+ && !bitmap_equal_p (vi->solution, vi->oldsolution))
+ {
+ bitmap_iterator bi;
+ unsigned i;
+ fprintf (file, " oldsolution: {");
+ EXECUTE_IF_SET_IN_BITMAP (vi->oldsolution, 0, i, bi)
+ fprintf (file, " %u", i);
+ fprintf (file, " }\n");
+ }
+}
+
+/* Dump varinfo VI to stderr. */
+
+DEBUG_FUNCTION void
+debug_varinfo (varinfo_t vi)
+{
+ dump_varinfo (stderr, vi);
+}
+
+/* Dump varmap to FILE. */
+
+static void
+dump_varmap (FILE *file)
+{
+ if (varmap.length () == 0)
+ return;
+
+ fprintf (file, "variables:\n");
+
+ for (unsigned int i = 0; i < varmap.length (); ++i)
+ {
+ varinfo_t vi = get_varinfo (i);
+ dump_varinfo (file, vi);
+ }
+
+ fprintf (file, "\n");
+}
+
+/* Dump varmap to stderr. */
+
+DEBUG_FUNCTION void
+debug_varmap (void)
+{
+ dump_varmap (stderr);
+}
+
/* Execute the driver for IPA PTA. */
static unsigned int
ipa_pta_execute (void)