On Mon, 26 Oct 2020, Xionghu Luo wrote: > > On 2020/10/23 18:18, Richard Biener wrote: > > On Fri, 23 Oct 2020, Xiong Hu Luo wrote: > > > >> Sometimes debug_bb_slim&debug_bb_n_slim is not enough, how about adding > >> this debug_bb_details&debug_bb_n_details? Or any other similar call > >> existed? > > There's already debug_bb and debug_bb_n in cfg.c which works on both > > RTL and GIMPLE. How about instead adding overloads that accept > > a flags argument so you can do > > > > debug_bb_n (5, TDF_DETAILS) > > > > ? The debug_bb_slim variant would then just a forwarder. > > > > Thanks. Updated the patch as below:
OK. Richard. > > [PATCH v2] Add overloaded debug_bb and debug_bb_n with dump flags > > > Add overloads that accept a flags argument so we can print > debug_bb_n (5, TDF_DETAILS) in gdb, also the debug_bb_slim > variant would then be just a forwarder. > > gcc/ChangeLog: > > 2020-10-26 Xionghu Luo <luo...@linux.ibm.com> > > * cfg.c (debug_bb): New overloaded function. > (debug_bb_n): New overloaded function. > * cfg.h (debug_bb_n): New declaration. > (debug_bb_n): New declaration. > * print-rtl.c (debug_bb_slim): Call debug_bb with flags. > --- > gcc/cfg.c | 20 +++++++++++++++++++- > gcc/cfg.h | 2 ++ > gcc/print-rtl.c | 2 +- > 3 files changed, 22 insertions(+), 2 deletions(-) > > diff --git a/gcc/cfg.c b/gcc/cfg.c > index 270a48f729a..05f922f5470 100644 > --- a/gcc/cfg.c > +++ b/gcc/cfg.c > @@ -720,7 +720,7 @@ free_aux_for_edges (void) > DEBUG_FUNCTION void > debug_bb (basic_block bb) > { > - dump_bb (stderr, bb, 0, dump_flags); > + debug_bb (bb, dump_flags); > } > > DEBUG_FUNCTION basic_block > @@ -731,6 +731,24 @@ debug_bb_n (int n) > return bb; > } > > +/* Print bb with specified flags. */ > + > +DEBUG_FUNCTION void > +debug_bb (basic_block bb, dump_flags_t flags) > +{ > + dump_bb (stderr, bb, 0, flags); > +} > + > +/* Print bb numbered n with specified flags. */ > + > +DEBUG_FUNCTION basic_block > +debug_bb_n (int n, dump_flags_t flags) > +{ > + basic_block bb = BASIC_BLOCK_FOR_FN (cfun, n); > + debug_bb (bb, flags); > + return bb; > +} > + > /* Dumps cfg related information about basic block BB to OUTF. > If HEADER is true, dump things that appear before the instructions > contained in BB. If FOOTER is true, dump things that appear after. > diff --git a/gcc/cfg.h b/gcc/cfg.h > index 1eb7866bac9..93fde6df2bf 100644 > --- a/gcc/cfg.h > +++ b/gcc/cfg.h > @@ -108,6 +108,8 @@ extern void clear_aux_for_edges (void); > extern void free_aux_for_edges (void); > extern void debug_bb (basic_block); > extern basic_block debug_bb_n (int); > +extern void debug_bb (basic_block, dump_flags_t); > +extern basic_block debug_bb_n (int, dump_flags_t); > extern void dump_bb_info (FILE *, basic_block, int, dump_flags_t, bool, > bool); > extern void brief_dump_cfg (FILE *, dump_flags_t); > extern void update_bb_profile_for_threading (basic_block, profile_count, > edge); > diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c > index 25265efc71b..d514b1c5373 100644 > --- a/gcc/print-rtl.c > +++ b/gcc/print-rtl.c > @@ -2139,7 +2139,7 @@ extern void debug_bb_slim (basic_block); > DEBUG_FUNCTION void > debug_bb_slim (basic_block bb) > { > - dump_bb (stderr, bb, 0, TDF_SLIM | TDF_BLOCKS); > + debug_bb (bb, TDF_SLIM | TDF_BLOCKS); > } > > extern void debug_bb_n_slim (int); > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imend