Let -fmem-report see callers of cxx_make_type.
authorJason Merrill <jason@redhat.com>
Thu, 21 Jun 2018 18:19:29 +0000 (14:19 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 21 Jun 2018 18:19:29 +0000 (14:19 -0400)
* 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

gcc/cp/ChangeLog
gcc/cp/cp-objcp-common.h
gcc/cp/cp-tree.h
gcc/cp/lex.c

index 1ec2382ebcc18e21bd342a00b7d3725e649cae68..55e9e0b0fc3b257d5d2ddd87064cb48159cd9cda 100644 (file)
@@ -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
index 18ccc5bb6cf3057ed544da53f534579029728afe..6f08253f70fdfae2732a8159587246cdb41ab616 100644 (file)
@@ -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
index ee9242f9313eac9b6d504e5f0c6974c4d8cafea1..0994377e5d78531814e9d1326cb39be56468ceec 100644 (file)
@@ -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);
index c47ae1dd5a18f3e7ed76cbe32081486a96c939e7..bd5d507e97b8ee0412b26c2bd45ab19a97869671 100644 (file)
@@ -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;
 }