From bf33fe90e75c2c463d77f83d9a44dc61abe087f5 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 27 Mar 2024 10:53:11 +0100 Subject: [PATCH] Improve SLP dump and graph The following notes which lanes are considered live and adds an overload to produce a graphviz graph for multiple entries into an SLP graph. * tree-vect-slp.cc (vect_print_slp_tree): Mark live lanes. (dot_slp_tree): New overload for multiple entries. --- gcc/tree-vect-slp.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 133606fa6f3..3eb326d20b5 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -2759,7 +2759,9 @@ vect_print_slp_tree (dump_flags_t dump_kind, dump_location_t loc, } if (SLP_TREE_SCALAR_STMTS (node).exists ()) FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (node), i, stmt_info) - dump_printf_loc (metadata, user_loc, "\tstmt %u %G", i, stmt_info->stmt); + dump_printf_loc (metadata, user_loc, "\t%sstmt %u %G", + STMT_VINFO_LIVE_P (stmt_info) ? "[l] " : "", + i, stmt_info->stmt); else { dump_printf_loc (metadata, user_loc, "\t{ "); @@ -2840,6 +2842,23 @@ dot_slp_tree (const char *fname, slp_tree node) fclose (f); } +DEBUG_FUNCTION void +dot_slp_tree (const char *fname, const vec &slp_instances) +{ + FILE *f = fopen (fname, "w"); + fprintf (f, "digraph {\n"); + fflush (f); + { + debug_dump_context ctx (f); + hash_set visited; + for (auto inst : slp_instances) + dot_slp_tree (f, SLP_INSTANCE_TREE (inst), visited); + } + fflush (f); + fprintf (f, "}\n"); + fclose (f); +} + /* Dump a slp tree NODE using flags specified in DUMP_KIND. */ static void