From e46f7cd204c3120790872c5865a11116b838d651 Mon Sep 17 00:00:00 2001 From: Frederik Harwath Date: Tue, 16 Nov 2021 16:16:47 +0100 Subject: [PATCH] openacc: Add "can_be_parallel" flag info to "graph" dumps gcc/ChangeLog: * graph.cc (oacc_get_fn_attrib): New declaration. (find_loop_location): New declaration. (draw_cfg_nodes_for_loop): Print value of the can_be_parallel flag at the top of loops in OpenACC functions. --- gcc/ChangeLog.omp | 8 ++++++++ gcc/graph.cc | 35 ++++++++++++++++++++++++----------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 97f2f523265d..8669e9e07e90 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,11 @@ +2021-11-16 Frederik Harwath + + * graph.cc (oacc_get_fn_attrib): New declaration. + (find_loop_location): New declaration. + (draw_cfg_nodes_for_loop): Print value of the + can_be_parallel flag at the top of loops in OpenACC + functions. + 2021-11-16 Frederik Harwath Thomas Schwinge diff --git a/gcc/graph.cc b/gcc/graph.cc index bc29862fcad2..ff5ef02e811b 100644 --- a/gcc/graph.cc +++ b/gcc/graph.cc @@ -192,6 +192,10 @@ draw_cfg_nodes_no_loops (pretty_printer *pp, struct function *fun) } } + +extern tree oacc_get_fn_attrib (tree); +extern dump_user_location_t find_loop_location (class loop *); + /* Draw all the basic blocks in LOOP. Print the blocks in breath-first order to get a good ranking of the nodes. This function is recursive: It first prints inner loops, then the body of LOOP itself. */ @@ -206,17 +210,26 @@ draw_cfg_nodes_for_loop (pretty_printer *pp, int funcdef_no, if (loop->header != NULL && loop->latch != EXIT_BLOCK_PTR_FOR_FN (cfun)) - pp_printf (pp, - "\tsubgraph cluster_%d_%d {\n" - "\tstyle=\"filled\";\n" - "\tcolor=\"darkgreen\";\n" - "\tfillcolor=\"%s\";\n" - "\tlabel=\"loop %d\";\n" - "\tlabeljust=l;\n" - "\tpenwidth=2;\n", - funcdef_no, loop->num, - fillcolors[(loop_depth (loop) - 1) % 3], - loop->num); + { + pp_printf (pp, + "\tsubgraph cluster_%d_%d {\n" + "\tstyle=\"filled\";\n" + "\tcolor=\"darkgreen\";\n" + "\tfillcolor=\"%s\";\n" + "\tlabel=\"loop %d %s\";\n" + "\tlabeljust=l;\n" + "\tpenwidth=2;\n", + funcdef_no, loop->num, + fillcolors[(loop_depth (loop) - 1) % 3], loop->num, + /* This is only meaningful for loops that have been processed + by Graphite. + + TODO Use can_be_parallel_valid_p? */ + !oacc_get_fn_attrib (cfun->decl) + ? "" + : loop->can_be_parallel ? "(can_be_parallel = true)" + : "(can_be_parallel = false)"); + } for (class loop *inner = loop->inner; inner; inner = inner->next) draw_cfg_nodes_for_loop (pp, funcdef_no, inner); -- 2.47.2