diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2017-11-20 08:32:57 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2017-11-20 08:32:57 +0000 |
commit | 19a30b7123aa90caf7de3e9ec588266e218f8028 (patch) | |
tree | 32e5e7fae29ce15cabb6a27c2982ccabef10c491 /gcc/hash-set.h | |
parent | 7cfaa4c643eabd8d5aaa74a8406f0bf4880b8fe6 (diff) | |
download | gcc-19a30b7123aa90caf7de3e9ec588266e218f8028.zip gcc-19a30b7123aa90caf7de3e9ec588266e218f8028.tar.gz gcc-19a30b7123aa90caf7de3e9ec588266e218f8028.tar.bz2 |
vec.h (debug_helper): New function.
* 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.
From-SVN: r254945
Diffstat (limited to 'gcc/hash-set.h')
-rw-r--r-- | gcc/hash-set.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/hash-set.h b/gcc/hash-set.h index 8ce796d..75ca147 100644 --- a/gcc/hash-set.h +++ b/gcc/hash-set.h @@ -127,6 +127,44 @@ private: hash_table<Traits> m_table; }; +/* Generic hash_set<TYPE> debug helper. + + This needs to be instantiated for each hash_set<TYPE> used throughout + the compiler like this: + + DEFINE_DEBUG_HASH_SET (TYPE) + + The reason we have a debug_helper() is because GDB can't + disambiguate a plain call to debug(some_hash), and it must be called + like debug<TYPE>(some_hash). */ +template<typename T> +void +debug_helper (hash_set<T> &ref) +{ + for (typename hash_set<T>::iterator it = ref.begin (); + it != ref.end (); ++it) + { + debug_slim (*it); + fputc ('\n', stderr); + } +} + +#define DEFINE_DEBUG_HASH_SET(T) \ + template static void debug_helper (hash_set<T> &); \ + DEBUG_FUNCTION void \ + debug (hash_set<T> &ref) \ + { \ + debug_helper <T> (ref); \ + } \ + DEBUG_FUNCTION void \ + debug (hash_set<T> *ptr) \ + { \ + if (ptr) \ + debug (*ptr); \ + else \ + fprintf (stderr, "<nil>\n"); \ + } + /* ggc marking routines. */ template<typename K, typename H> |