I noticed that DECL_VTABLE_OR_VTT_P and DECL_VIRTUAL_P have the same semantics for VAR_DECLs. We set them both at the same time, and the C++ FE tests the former, but (I presume) the optimizers test the latter.

It doesn't seem to matter that we set DECL_VIRTUAL_P for the VTT.

The attached patch survives bootstraping, so I'll install it next week, if there's no objections.

nathan

--
Nathan Sidwell
2019-08-30  Nathan Sidwell  <nat...@acm.org>

	* cp-tree.h (DECL_VTABLE_OR_VTT_P): Forward to DECL_VIRTUAL_P.

Index: gcc/cp/cp-tree.h
===================================================================
--- gcc/cp/cp-tree.h	(revision 275032)
+++ gcc/cp/cp-tree.h	(working copy)
@@ -463,5 +463,4 @@ extern GTY(()) tree cp_global_trees[CPTI
       LOOKUP_FOUND_P (in RECORD_TYPE, UNION_TYPE, NAMESPACE_DECL)
    5: IDENTIFIER_VIRTUAL_P (in IDENTIFIER_NODE)
-      DECL_VTABLE_OR_VTT_P (in VAR_DECL)
       FUNCTION_RVALUE_QUALIFIED (in FUNCTION_TYPE, METHOD_TYPE)
       CALL_EXPR_REVERSE_ARGS (in CALL_EXPR, AGGR_INIT_EXPR)
@@ -3255,6 +3254,8 @@ struct GTY(()) lang_decl {
 #define DECL_TINFO_P(NODE) TREE_LANG_FLAG_4 (VAR_DECL_CHECK (NODE))
 
-/* 1 iff VAR_DECL node NODE is virtual table or VTT.  */
-#define DECL_VTABLE_OR_VTT_P(NODE) TREE_LANG_FLAG_5 (VAR_DECL_CHECK (NODE))
+/* 1 iff VAR_DECL node NODE is virtual table or VTT.  We forward to
+   DECL_VIRTUAL_P from the common code, as that has the semantics we
+   need.  But we want a more descriptive name.  */
+#define DECL_VTABLE_OR_VTT_P(NODE) DECL_VIRTUAL_P (VAR_DECL_CHECK (NODE))
 
 /* 1 iff FUNCTION_TYPE or METHOD_TYPE has a ref-qualifier (either & or &&). */

Reply via email to