diff options
author | Nathan Sidwell <nathan@acm.org> | 2017-05-19 13:10:36 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2017-05-19 13:10:36 +0000 |
commit | 2a8a8d7bd28ef295b15f5b1c0cd17e73409c80a6 (patch) | |
tree | b57253306ce6fa1d70381c3429ede182b0b3d246 /gcc/cp | |
parent | a978134eac8ab9a3248405b4114cff2e957ed812 (diff) | |
download | gcc-2a8a8d7bd28ef295b15f5b1c0cd17e73409c80a6.zip gcc-2a8a8d7bd28ef295b15f5b1c0cd17e73409c80a6.tar.gz gcc-2a8a8d7bd28ef295b15f5b1c0cd17e73409c80a6.tar.bz2 |
toplev.c (general_init): Call register dump lang hook.
LANG_HOOK_REGISTER_DUMPS
gcc/
* toplev.c (general_init): Call register dump lang hook.
* doc/invoke.texi: Document -fdump-lang option family.
* dumpfile.c (dump_files): Remove class dump here.
(FIRST_AUTO_NUMBERED_DUMP): Adjust.
* dumpfile.h (tree_dump_index): Remove TDI_class.
* langhooks-def.h (lhd_register_dumps): Declare.
(LANG_HOOKS_REGISTER_DUMPS): Define.
(LANG_HOOKS_INITIALIZER): Add it.
* langhooks.c (lhd_register_dumps): Define.
* langhooks.h (struct lang_hooks): Add register_dumps.
c-family/
* c-opts.c (class_dump_file, class_dump_flags): Delete.
(c_common_parse_file): Remove class dump handling.
(get_dump_info): Likewise.
cp/
* class.c (class_dump_id): Define.
(dump_class_hierarchy, dump_vtable, dump_vtt): Use it.
* cp-objcp-common.c (cp_register_dumps): New.
* cp-objcp-common.h (cp_register_dumps): Declare.
(LANG_HOOKS_REGISTER_DUMPS): Override.
* cp-tree.h (class_dump_id): Declare.
testsuite/
* g++.dg/inherit/covariant7.C: Adjust.
From-SVN: r248271
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cp/class.c | 16 | ||||
-rw-r--r-- | gcc/cp/cp-objcp-common.c | 9 | ||||
-rw-r--r-- | gcc/cp/cp-objcp-common.h | 3 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 3 |
5 files changed, 35 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e903bfd..09c8269 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2017-05-19 Nathan Sidwell <nathan@acm.org> + + * class.c (class_dump_id): Define. + (dump_class_hierarchy, dump_vtable, dump_vtt): Use it. + * cp-objcp-common.c (cp_register_dumps): New. + * cp-objcp-common.h (cp_register_dumps): Declare. + (LANG_HOOKS_REGISTER_DUMPS): Override. + * cp-tree.h (class_dump_id): Declare. + 2017-05-18 Nathan Sidwell <nathan@acm.org> * cp-tree.h (OVL_ARG_DEPENDENT): Delete. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 6f3f3e6..c0eb945 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -37,6 +37,9 @@ along with GCC; see the file COPYING3. If not see #include "gimplify.h" #include "intl.h" +/* Id for dumping the class hierarchy. */ +int class_dump_id; + /* The number of nested classes being processed. If we are not in the scope of any class, this is zero. */ @@ -8914,11 +8917,10 @@ static void dump_class_hierarchy (tree t) { dump_flags_t flags; - FILE *stream = get_dump_info (TDI_class, &flags); - - if (stream) + if (FILE *stream = dump_begin (class_dump_id, &flags)) { dump_class_hierarchy_1 (stream, flags, t); + dump_end (class_dump_id, stream); } } @@ -8948,7 +8950,7 @@ static void dump_vtable (tree t, tree binfo, tree vtable) { dump_flags_t flags; - FILE *stream = get_dump_info (TDI_class, &flags); + FILE *stream = dump_begin (class_dump_id, &flags); if (!stream) return; @@ -8971,13 +8973,15 @@ dump_vtable (tree t, tree binfo, tree vtable) dump_array (stream, vtable); fprintf (stream, "\n"); } + + dump_end (class_dump_id, stream); } static void dump_vtt (tree t, tree vtt) { dump_flags_t flags; - FILE *stream = get_dump_info (TDI_class, &flags); + FILE *stream = dump_begin (class_dump_id, &flags); if (!stream) return; @@ -8989,6 +8993,8 @@ dump_vtt (tree t, tree vtt) dump_array (stream, vtt); fprintf (stream, "\n"); } + + dump_end (class_dump_id, stream); } /* Dump a function or thunk and its thunkees. */ diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c index 8627978..40e9ccb 100644 --- a/gcc/cp/cp-objcp-common.c +++ b/gcc/cp/cp-objcp-common.c @@ -352,6 +352,15 @@ cp_pushdecl (tree decl) return pushdecl (decl); } +/* Register c++-specific dumps. */ + +void +cp_register_dumps (gcc::dump_manager *dumps) +{ + class_dump_id = dumps->dump_register + (".class", "lang-class", "lang-class", DK_lang, OPTGROUP_NONE, false); +} + void cp_common_init_ts (void) { diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index 0d752a7..10fcdf3 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -33,6 +33,7 @@ extern void cp_common_init_ts (void); extern tree cp_unit_size_without_reusable_padding (tree); extern tree cp_get_global_decls (); extern tree cp_pushdecl (tree); +extern void cp_register_dumps (gcc::dump_manager *); /* Lang hooks that are shared between C++ and ObjC++ are defined here. Hooks specific to C++ or ObjC++ go in cp/cp-lang.c and objcp/objcp-lang.c, @@ -56,6 +57,8 @@ extern tree cp_pushdecl (tree); #define LANG_HOOKS_INIT_OPTIONS c_common_init_options #undef LANG_HOOKS_INITIALIZE_DIAGNOSTICS #define LANG_HOOKS_INITIALIZE_DIAGNOSTICS cxx_initialize_diagnostics +#undef LANG_HOOKS_REGISTER_DUMPS +#define LANG_HOOKS_REGISTER_DUMPS cp_register_dumps #undef LANG_HOOKS_HANDLE_OPTION #define LANG_HOOKS_HANDLE_OPTION c_common_handle_option #undef LANG_HOOKS_HANDLE_FILENAME diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 82bb965..e9e4b00 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -5749,6 +5749,9 @@ concept_template_p (tree t) e.g "int f(void)". */ extern cp_parameter_declarator *no_parameters; +/* Various dump ids. */ +extern int class_dump_id; + /* in call.c */ extern bool check_dtor_name (tree, tree); int magic_varargs_p (tree); |