diff options
author | Jason Merrill <jason@redhat.com> | 2018-06-21 14:19:29 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2018-06-21 14:19:29 -0400 |
commit | 6ec04704dfb7425443de886e7f590286ce3b87a0 (patch) | |
tree | 9fd7714ad2ce10751035bb8a12fb34283a3f9b32 /gcc | |
parent | 8745500a49bfde05e5a82bd3f8a22a7fe46e2fc7 (diff) | |
download | gcc-6ec04704dfb7425443de886e7f590286ce3b87a0.zip gcc-6ec04704dfb7425443de886e7f590286ce3b87a0.tar.gz gcc-6ec04704dfb7425443de886e7f590286ce3b87a0.tar.bz2 |
Let -fmem-report see callers of cxx_make_type.
* lex.c (cxx_make_type): Add MEM_STAT_DECL.
(make_class_type): Likewise.
(cxx_make_type_hook): New.
* cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
From-SVN: r261859
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cp/cp-objcp-common.h | 3 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 4 | ||||
-rw-r--r-- | gcc/cp/lex.c | 16 |
4 files changed, 24 insertions, 7 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1ec2382..55e9e0b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2018-06-21 Jason Merrill <jason@redhat.com> + + Let -fmem-report see callers of cxx_make_type. + * lex.c (cxx_make_type): Add MEM_STAT_DECL. + (make_class_type): Likewise. + (cxx_make_type_hook): New. + * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook. + 2018-06-20 Nathan Sidwell <nathan@acm.org> PR c++/85634 diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index 18ccc5b..6f08253 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -34,6 +34,7 @@ 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 *); +extern tree cxx_make_type_hook (tree_code); /* 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, @@ -126,7 +127,7 @@ extern void cp_register_dumps (gcc::dump_manager *); #define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN cp_type_quals #undef LANG_HOOKS_MAKE_TYPE -#define LANG_HOOKS_MAKE_TYPE cxx_make_type +#define LANG_HOOKS_MAKE_TYPE cxx_make_type_hook #undef LANG_HOOKS_TYPE_FOR_MODE #define LANG_HOOKS_TYPE_FOR_MODE c_common_type_for_mode #undef LANG_HOOKS_TYPE_FOR_SIZE diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index ee9242f..0994377 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -6495,8 +6495,8 @@ extern void retrofit_lang_decl (tree); extern void fit_decomposition_lang_decl (tree, tree); extern tree copy_decl (tree CXX_MEM_STAT_INFO); extern tree copy_type (tree CXX_MEM_STAT_INFO); -extern tree cxx_make_type (enum tree_code); -extern tree make_class_type (enum tree_code); +extern tree cxx_make_type (enum tree_code CXX_MEM_STAT_INFO); +extern tree make_class_type (enum tree_code CXX_MEM_STAT_INFO); extern const char *get_identifier_kind_name (tree); extern void set_identifier_kind (tree, cp_identifier_kind); extern bool cxx_init (void); diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index c47ae1dd..bd5d507 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -852,9 +852,9 @@ maybe_add_lang_type_raw (tree t) } tree -cxx_make_type (enum tree_code code) +cxx_make_type (enum tree_code code MEM_STAT_DECL) { - tree t = make_node (code); + tree t = make_node (code PASS_MEM_STAT); if (maybe_add_lang_type_raw (t)) { @@ -868,10 +868,18 @@ cxx_make_type (enum tree_code code) return t; } +/* A wrapper without the memory stats for LANG_HOOKS_MAKE_TYPE. */ + +tree +cxx_make_type_hook (enum tree_code code) +{ + return cxx_make_type (code); +} + tree -make_class_type (enum tree_code code) +make_class_type (enum tree_code code MEM_STAT_DECL) { - tree t = cxx_make_type (code); + tree t = cxx_make_type (code PASS_MEM_STAT); SET_CLASS_TYPE_P (t, 1); return t; } |