This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PING Fwd: [patch] implement generic debug() for vectors and hash sets


On 10/23/2017 03:44 AM, Aldy Hernandez wrote:
> 
> 
> 
> -------- Forwarded Message --------
> Subject: [patch] implement generic debug() for vectors and hash sets
> Date: Mon, 16 Oct 2017 09:52:51 -0400
> From: Aldy Hernandez <aldyh@redhat.com>
> To: gcc-patches <gcc-patches@gcc.gnu.org>
> 
> We have a generic mechanism for dumping types from the debugger with:
> 
> (gdb) call debug(some_type)
> 
> However, even though most types are implemented, we have no canonical
> way of dumping vectors or hash sets.
> 
> The attached patch fixes this oversight.  With it you can call
> debug(vec<>) and debug(hash_set<>) with the following types: rtx,
> tree, basic_block, edge, rtx_insn.  More can be added simply by adding
> a debug_slim(your_type) overload and calling:
> 
>   DEFINE_DEBUG_VEC (your_type)
>   DEFINE_DEBUG_HASH_SET (your_type)
> 
> Here is an example of how things look with this patch:
> 
> vec of edges:
> [0] = <edge 0x0x7f3f81c0d700 (6 -> 10)>
> 
> vec of bbs:
> [0] = <basic_block 0x7f3f81ac9410 (6)>
> [1] = <basic_block 0x7f3f81ac96e8 (10)>
> 
> vec of trees:
> [0] =  <integer_type 0x7f3f81ad55e8 int>
> [1] =  <integer_type 0x7f3f81ad5498 short int>
> [2] =  <integer_cst 0x7f3f81ada078 0>
> 
> vec of rtx:
> [0] = (reg:SI 87)
> [1] = (reg:SI 87)
> 
> hash of bbs:
> <basic_block 0x7f3f81ac96e8 (10)>
> <basic_block 0x7f3f81ac9410 (6)>
> 
> OK for mainline?
> 
> 
> curr.patch
> 
> 
> gcc/
> 
> 	* vec.h (debug_helper): New function.
> 	(DEFINE_DEBUG_VEC): New macro.
> 	* hash-set.h (debug_helper): New function.
> 	(DEFINE_DEBUG_HASH_SET): New macro.
> 	* cfg.c (debug_slim (edge)): New function.
> 	Call DEFINE_DEBUG_VEC for edges.
> 	Call DEFINE_DEBUG_HASH_SET for edges.
> 	* cfghooks.c (debug_slim (basic_block)): New function.
> 	Call DEFINE_DEBUG_VEC for basic blocks.
> 	Call DEFINE_DEBUG_HASH_SET for basic blocks.
> 	* print-tree.c (debug_slim): New function to handle trees.
> 	Call DEFINE_DEBUG_VEC for trees.
> 	Call DEFINE_DEBUG_HASH_SET for trees.
> 	(debug (vec<tree, va_gc>) &): Remove.
> 	(debug (<vec<tree, va_gc>) *): Remove.
> 	* print-rtl.c (debug_slim): New function to handle const_rtx.
> 	Call DEFINE_DEBUG_VEC for rtx_def.
> 	Call DEFINE_DEBUG_VEC for rtx_insn.
> 	Call DEFINE_DEBUG_HASH_SET for rtx_def.
> 	Call DEFINE_DEBUG_HASH_SET for rtx_insn.
> 	* sel-sched-dump.c (debug (vec<rtx_insn *> &): Remove.
> 	(debug (vec<rtx_insn *> *ptr): Remove.
> 	(debug_insn_vector): Remove.
> 	* stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree.
OK.
jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]