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 <al...@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