[PATCH] some tree struct marking
authorNathan Sidwell <nathan@acm.org>
Wed, 11 Sep 2019 11:28:00 +0000 (11:28 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 11 Sep 2019 11:28:00 +0000 (11:28 +0000)
https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00697.html
gcc/
* tree.h (MARK_TS_TYPE_NON_COMMON): New.
* tree.c (tree_node_structure_for_code): Reformat and alphabetize.

gcc/cp/
* c-objcp-common.c (cp-objcp-common.c): Alphababetize and
correctly mark all C++ nodes.

From-SVN: r275641

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

index 85bb9ba23fa2ef187d016f4ad8b69c750c64788b..608f3b92600cc9d0ab17864efc53987ee3e62d96 100644 (file)
@@ -1,3 +1,8 @@
+2019-09-11  Nathan Sidwell  <nathan@acm.org>
+
+       * tree.h (MARK_TS_TYPE_NON_COMMON): New.
+       * tree.c (tree_node_structure_for_code): Reformat and alphabetize.
+
 2019-09-11  Richard Biener  <rguenther@suse.de>
 
        * lto-opts.c (lto_write_options): Stream -g when debug is enabled.
index 0c37460defbd5798892234414d535ad770ddbf64..8f266a222d5e1de86c01292385198d72952d63e8 100644 (file)
@@ -1,3 +1,9 @@
+2019-09-11  Nathan Sidwell  <nathan@acm.org>
+
+       * c-objcp-common.c (cp-objcp-common.c): Alphababetize and
+       correctly mark all C++ nodes.
+       * decl.c (cp_tree_node_structure): Alphabetize.
+
 2019-09-10  Marek Polacek  <polacek@redhat.com>
 
        PR c++/91673 - ICE with noexcept in alias-declaration.
index 4c95180bd4b6db1a62679ba613947e14905a87d5..4369a5b55707aaeea8ca51db75d7fab1f7786371 100644 (file)
@@ -365,104 +365,113 @@ cp_register_dumps (gcc::dump_manager *dumps)
 void
 cp_common_init_ts (void)
 {
-  MARK_TS_DECL_NON_COMMON (USING_DECL);
-  MARK_TS_DECL_COMMON (TEMPLATE_DECL);
-  MARK_TS_DECL_COMMON (WILDCARD_DECL);
+  /* With type.  */
+  MARK_TS_TYPED (PTRMEM_CST);
+  MARK_TS_TYPED (LAMBDA_EXPR);
+  MARK_TS_TYPED (TYPE_ARGUMENT_PACK);
 
-  MARK_TS_COMMON (TEMPLATE_TEMPLATE_PARM);
-  MARK_TS_COMMON (TEMPLATE_TYPE_PARM);
-  MARK_TS_COMMON (TEMPLATE_PARM_INDEX);
+  /* Random new trees.  */
+  MARK_TS_COMMON (BASELINK);
+  MARK_TS_COMMON (DECLTYPE_TYPE);
   MARK_TS_COMMON (OVERLOAD);
+  MARK_TS_COMMON (TEMPLATE_PARM_INDEX);
   MARK_TS_COMMON (TYPENAME_TYPE);
   MARK_TS_COMMON (TYPEOF_TYPE);
-  MARK_TS_COMMON (UNDERLYING_TYPE);
-  MARK_TS_COMMON (BASELINK);
-  MARK_TS_COMMON (TYPE_PACK_EXPANSION);
-  MARK_TS_COMMON (TYPE_ARGUMENT_PACK);
-  MARK_TS_COMMON (DECLTYPE_TYPE);
-  MARK_TS_COMMON (BOUND_TEMPLATE_TEMPLATE_PARM);
   MARK_TS_COMMON (UNBOUND_CLASS_TEMPLATE);
+  MARK_TS_COMMON (UNDERLYING_TYPE);
 
-  MARK_TS_TYPED (SWITCH_STMT);
-  MARK_TS_TYPED (IF_STMT);
-  MARK_TS_TYPED (FOR_STMT);
-  MARK_TS_TYPED (RANGE_FOR_STMT);
-  MARK_TS_TYPED (EH_SPEC_BLOCK);
-  MARK_TS_TYPED (CLEANUP_STMT);
-  MARK_TS_TYPED (SCOPE_REF);
-  MARK_TS_TYPED (TRY_BLOCK);
-  MARK_TS_TYPED (HANDLER);
-  MARK_TS_TYPED (TYPE_ARGUMENT_PACK);
-  MARK_TS_TYPED (NOEXCEPT_EXPR);
-  MARK_TS_TYPED (WHILE_STMT);
-  MARK_TS_TYPED (BREAK_STMT);
-  MARK_TS_TYPED (DO_STMT);
-  MARK_TS_TYPED (CONTINUE_STMT);
-  MARK_TS_TYPED (PTRMEM_CST);
-  MARK_TS_TYPED (USING_STMT);
-  MARK_TS_TYPED (OMP_DEPOBJ);
+  /* New decls.  */
+  MARK_TS_DECL_COMMON (TEMPLATE_DECL);
+  MARK_TS_DECL_COMMON (WILDCARD_DECL);
+
+  MARK_TS_DECL_NON_COMMON (USING_DECL);
 
+  /* New Types.  */
+  MARK_TS_TYPE_NON_COMMON (BOUND_TEMPLATE_TEMPLATE_PARM);
+  MARK_TS_TYPE_NON_COMMON (TEMPLATE_TEMPLATE_PARM);
+  MARK_TS_TYPE_NON_COMMON (TEMPLATE_TYPE_PARM);
+  MARK_TS_TYPE_NON_COMMON (TYPE_ARGUMENT_PACK);
+  MARK_TS_TYPE_NON_COMMON (TYPE_PACK_EXPANSION);
+
+  /* Statements.  */
+  MARK_TS_EXP (BREAK_STMT);
+  MARK_TS_EXP (CLEANUP_STMT);
+  MARK_TS_EXP (CONTINUE_STMT);
+  MARK_TS_EXP (DO_STMT);
+  MARK_TS_EXP (EH_SPEC_BLOCK);
+  MARK_TS_EXP (FOR_STMT);
+  MARK_TS_EXP (HANDLER);
+  MARK_TS_EXP (IF_STMT);
+  MARK_TS_EXP (OMP_DEPOBJ);
+  MARK_TS_EXP (RANGE_FOR_STMT);
+  MARK_TS_EXP (SWITCH_STMT);
+  MARK_TS_EXP (TRY_BLOCK);
+  MARK_TS_EXP (USING_STMT);
+  MARK_TS_EXP (WHILE_STMT);
+
+  /* Random expressions.  */
+  MARK_TS_EXP (ADDRESSOF_EXPR);
   MARK_TS_EXP (AGGR_INIT_EXPR);
+  MARK_TS_EXP (ALIGNOF_EXPR);
+  MARK_TS_EXP (ARROW_EXPR);
+  MARK_TS_EXP (AT_ENCODE_EXPR);
+  MARK_TS_EXP (CAST_EXPR);
+  MARK_TS_EXP (CONST_CAST_EXPR);
   MARK_TS_EXP (CTOR_INITIALIZER);
-  MARK_TS_EXP (EXPR_STMT);
-  MARK_TS_EXP (TAG_DEFN);
+  MARK_TS_EXP (DELETE_EXPR);
+  MARK_TS_EXP (DOTSTAR_EXPR);
+  MARK_TS_EXP (DYNAMIC_CAST_EXPR);
   MARK_TS_EXP (EMPTY_CLASS_EXPR);
+  MARK_TS_EXP (EXPR_STMT);
+  MARK_TS_EXP (IMPLICIT_CONV_EXPR);
+  MARK_TS_EXP (MEMBER_REF);
   MARK_TS_EXP (MODOP_EXPR);
-  MARK_TS_EXP (THROW_EXPR);
-  MARK_TS_EXP (CAST_EXPR);
-  MARK_TS_EXP (TYPE_EXPR);
+  MARK_TS_EXP (MUST_NOT_THROW_EXPR);
+  MARK_TS_EXP (NEW_EXPR);
+  MARK_TS_EXP (NOEXCEPT_EXPR);
+  MARK_TS_EXP (NON_DEPENDENT_EXPR);
+  MARK_TS_EXP (OFFSETOF_EXPR);
+  MARK_TS_EXP (OFFSET_REF);
+  MARK_TS_EXP (PSEUDO_DTOR_EXPR);
   MARK_TS_EXP (REINTERPRET_CAST_EXPR);
-  MARK_TS_EXP (CONST_CAST_EXPR);
+  MARK_TS_EXP (SCOPE_REF);
   MARK_TS_EXP (STATIC_CAST_EXPR);
-  MARK_TS_EXP (DYNAMIC_CAST_EXPR);
-  MARK_TS_EXP (IMPLICIT_CONV_EXPR);
+  MARK_TS_EXP (STMT_EXPR);
+  MARK_TS_EXP (TAG_DEFN);
   MARK_TS_EXP (TEMPLATE_ID_EXPR);
-  MARK_TS_EXP (ARROW_EXPR);
-  MARK_TS_EXP (UNARY_PLUS_EXPR);
+  MARK_TS_EXP (THROW_EXPR);
   MARK_TS_EXP (TRAIT_EXPR);
-
-  MARK_TS_EXP (NON_DEPENDENT_EXPR);
-  MARK_TS_EXP (NEW_EXPR);
-  MARK_TS_EXP (VEC_NEW_EXPR);
-  MARK_TS_EXP (MEMBER_REF);
-  MARK_TS_EXP (DOTSTAR_EXPR);
-  MARK_TS_EXP (DELETE_EXPR);
-  MARK_TS_EXP (VEC_DELETE_EXPR);
-  MARK_TS_EXP (PSEUDO_DTOR_EXPR);
   MARK_TS_EXP (TYPEID_EXPR);
-  MARK_TS_EXP (MUST_NOT_THROW_EXPR);
-  MARK_TS_EXP (STMT_EXPR);
-  MARK_TS_EXP (OFFSET_REF);
-  MARK_TS_EXP (OFFSETOF_EXPR);
-  MARK_TS_EXP (ADDRESSOF_EXPR);
+  MARK_TS_EXP (TYPE_EXPR);
+  MARK_TS_EXP (UNARY_PLUS_EXPR);
+  MARK_TS_EXP (VEC_DELETE_EXPR);
   MARK_TS_EXP (VEC_INIT_EXPR);
-  MARK_TS_EXP (LAMBDA_EXPR);
-
-  MARK_TS_EXP (ALIGNOF_EXPR);
-  MARK_TS_EXP (AT_ENCODE_EXPR);
+  MARK_TS_EXP (VEC_NEW_EXPR);
 
-  MARK_TS_EXP (NONTYPE_ARGUMENT_PACK);
+  /* Fold expressions.  */
+  MARK_TS_EXP (BINARY_LEFT_FOLD_EXPR);
+  MARK_TS_EXP (BINARY_RIGHT_FOLD_EXPR);
   MARK_TS_EXP (EXPR_PACK_EXPANSION);
+  MARK_TS_EXP (NONTYPE_ARGUMENT_PACK);
   MARK_TS_EXP (UNARY_LEFT_FOLD_EXPR);
   MARK_TS_EXP (UNARY_RIGHT_FOLD_EXPR);
-  MARK_TS_EXP (BINARY_LEFT_FOLD_EXPR);
-  MARK_TS_EXP (BINARY_RIGHT_FOLD_EXPR);
 
-  MARK_TS_EXP (REQUIRES_EXPR);
-  MARK_TS_EXP (SIMPLE_REQ);
-  MARK_TS_EXP (TYPE_REQ);
-  MARK_TS_EXP (COMPOUND_REQ);
-  MARK_TS_EXP (NESTED_REQ);
-  MARK_TS_EXP (PRED_CONSTR);
+  /* Constraints.  */
   MARK_TS_EXP (CHECK_CONSTR);
-  MARK_TS_EXP (EXPR_CONSTR);
-  MARK_TS_EXP (TYPE_CONSTR);
-  MARK_TS_EXP (ICONV_CONSTR);
+  MARK_TS_EXP (COMPOUND_REQ);
+  MARK_TS_EXP (CONJ_CONSTR);
   MARK_TS_EXP (DEDUCT_CONSTR);
+  MARK_TS_EXP (DISJ_CONSTR);
   MARK_TS_EXP (EXCEPT_CONSTR);
+  MARK_TS_EXP (EXPR_CONSTR);
+  MARK_TS_EXP (ICONV_CONSTR);
+  MARK_TS_EXP (NESTED_REQ);
   MARK_TS_EXP (PARM_CONSTR);
-  MARK_TS_EXP (CONJ_CONSTR);
-  MARK_TS_EXP (DISJ_CONSTR);
+  MARK_TS_EXP (PRED_CONSTR);
+  MARK_TS_EXP (REQUIRES_EXPR);
+  MARK_TS_EXP (SIMPLE_REQ);
+  MARK_TS_EXP (TYPE_CONSTR);
+  MARK_TS_EXP (TYPE_REQ);
 
   c_common_init_ts ();
 }
index 8bb398bfa5c2e137551e675e9dd2bb33ceed99ab..9218eefa0b4d60e2fd2d39d4ed17c34601447fc7 100644 (file)
@@ -16827,20 +16827,20 @@ cp_tree_node_structure (union lang_tree_node * t)
 {
   switch (TREE_CODE (&t->generic))
     {
-    case DEFERRED_PARSE:       return TS_CP_DEFERRED_PARSE;
+    case ARGUMENT_PACK_SELECT:  return TS_CP_ARGUMENT_PACK_SELECT;
+    case BASELINK:             return TS_CP_BASELINK;
+    case CONSTRAINT_INFO:       return TS_CP_CONSTRAINT_INFO;
     case DEFERRED_NOEXCEPT:    return TS_CP_DEFERRED_NOEXCEPT;
+    case DEFERRED_PARSE:       return TS_CP_DEFERRED_PARSE;
     case IDENTIFIER_NODE:      return TS_CP_IDENTIFIER;
+    case LAMBDA_EXPR:          return TS_CP_LAMBDA_EXPR;
     case OVERLOAD:             return TS_CP_OVERLOAD;
-    case TEMPLATE_PARM_INDEX:  return TS_CP_TPI;
     case PTRMEM_CST:           return TS_CP_PTRMEM;
-    case BASELINK:             return TS_CP_BASELINK;
-    case TEMPLATE_DECL:                return TS_CP_TEMPLATE_DECL;
     case STATIC_ASSERT:                return TS_CP_STATIC_ASSERT;
-    case ARGUMENT_PACK_SELECT:  return TS_CP_ARGUMENT_PACK_SELECT;
-    case TRAIT_EXPR:           return TS_CP_TRAIT_EXPR;
-    case LAMBDA_EXPR:          return TS_CP_LAMBDA_EXPR;
+    case TEMPLATE_DECL:                return TS_CP_TEMPLATE_DECL;
     case TEMPLATE_INFO:                return TS_CP_TEMPLATE_INFO;
-    case CONSTRAINT_INFO:       return TS_CP_CONSTRAINT_INFO;
+    case TEMPLATE_PARM_INDEX:  return TS_CP_TPI;
+    case TRAIT_EXPR:           return TS_CP_TRAIT_EXPR;
     case USERDEF_LITERAL:      return TS_CP_USERDEF_LITERAL;
     default:                   return TS_CP_GENERIC;
     }
index afd70203c2b5f673c94dcf45d17af0c50a3cb2c9..6be756c19ee17f77a4f434c08646ce4da419115c 100644 (file)
@@ -455,71 +455,61 @@ tree_node_structure_for_code (enum tree_code code)
   switch (TREE_CODE_CLASS (code))
     {
     case tcc_declaration:
-      {
-       switch (code)
-         {
-         case FIELD_DECL:
-           return TS_FIELD_DECL;
-         case PARM_DECL:
-           return TS_PARM_DECL;
-         case VAR_DECL:
-           return TS_VAR_DECL;
-         case LABEL_DECL:
-           return TS_LABEL_DECL;
-         case RESULT_DECL:
-           return TS_RESULT_DECL;
-         case DEBUG_EXPR_DECL:
-           return TS_DECL_WRTL;
-         case CONST_DECL:
-           return TS_CONST_DECL;
-         case TYPE_DECL:
-           return TS_TYPE_DECL;
-         case FUNCTION_DECL:
-           return TS_FUNCTION_DECL;
-         case TRANSLATION_UNIT_DECL:
-           return TS_TRANSLATION_UNIT_DECL;
-         default:
-           return TS_DECL_NON_COMMON;
-         }
-      }
-    case tcc_type:
-      return TS_TYPE_NON_COMMON;
-    case tcc_reference:
-    case tcc_comparison:
-    case tcc_unary:
+      switch (code)
+       {
+       case CONST_DECL:        return TS_CONST_DECL;
+       case DEBUG_EXPR_DECL:   return TS_DECL_WRTL;
+       case FIELD_DECL:        return TS_FIELD_DECL;
+       case FUNCTION_DECL:     return TS_FUNCTION_DECL;
+       case LABEL_DECL:        return TS_LABEL_DECL;
+       case PARM_DECL:         return TS_PARM_DECL;
+       case RESULT_DECL:       return TS_RESULT_DECL;
+       case TRANSLATION_UNIT_DECL: return TS_TRANSLATION_UNIT_DECL;
+       case TYPE_DECL:         return TS_TYPE_DECL;
+       case VAR_DECL:          return TS_VAR_DECL;
+       default:                return TS_DECL_NON_COMMON;
+       }
+
+    case tcc_type:             return TS_TYPE_NON_COMMON;
+
     case tcc_binary:
+    case tcc_comparison:
     case tcc_expression:
+    case tcc_reference:
     case tcc_statement:
-    case tcc_vl_exp:
-      return TS_EXP;
+    case tcc_unary:
+    case tcc_vl_exp:           return TS_EXP;
+
     default:  /* tcc_constant and tcc_exceptional */
       break;
     }
+
   switch (code)
     {
       /* tcc_constant cases.  */
-    case VOID_CST:             return TS_TYPED;
+    case COMPLEX_CST:          return TS_COMPLEX;
+    case FIXED_CST:            return TS_FIXED_CST;
     case INTEGER_CST:          return TS_INT_CST;
     case POLY_INT_CST:         return TS_POLY_INT_CST;
     case REAL_CST:             return TS_REAL_CST;
-    case FIXED_CST:            return TS_FIXED_CST;
-    case COMPLEX_CST:          return TS_COMPLEX;
-    case VECTOR_CST:           return TS_VECTOR;
     case STRING_CST:           return TS_STRING;
+    case VECTOR_CST:           return TS_VECTOR;
+    case VOID_CST:             return TS_TYPED;
+
       /* tcc_exceptional cases.  */
-    case ERROR_MARK:           return TS_COMMON;
-    case IDENTIFIER_NODE:      return TS_IDENTIFIER;
-    case TREE_LIST:            return TS_LIST;
-    case TREE_VEC:             return TS_VEC;
-    case SSA_NAME:             return TS_SSA_NAME;
-    case PLACEHOLDER_EXPR:     return TS_COMMON;
-    case STATEMENT_LIST:       return TS_STATEMENT_LIST;
     case BLOCK:                        return TS_BLOCK;
     case CONSTRUCTOR:          return TS_CONSTRUCTOR;
-    case TREE_BINFO:           return TS_BINFO;
+    case ERROR_MARK:           return TS_COMMON;
+    case IDENTIFIER_NODE:      return TS_IDENTIFIER;
     case OMP_CLAUSE:           return TS_OMP_CLAUSE;
     case OPTIMIZATION_NODE:    return TS_OPTIMIZATION;
+    case PLACEHOLDER_EXPR:     return TS_COMMON;
+    case SSA_NAME:             return TS_SSA_NAME;
+    case STATEMENT_LIST:       return TS_STATEMENT_LIST;
     case TARGET_OPTION_NODE:   return TS_TARGET_OPTION;
+    case TREE_BINFO:           return TS_BINFO;
+    case TREE_LIST:            return TS_LIST;
+    case TREE_VEC:             return TS_VEC;
 
     default:
       gcc_unreachable ();
index fc85572dffa835debf0f11c34921911b780e4dc7..3fc36a4d0874cd5fdfb62f606f8eae27eae99ec8 100644 (file)
@@ -94,6 +94,10 @@ as_internal_fn (combined_fn code)
   (MARK_TS_TYPE_COMMON (C),                            \
    tree_contains_struct[C][TS_TYPE_WITH_LANG_SPECIFIC] = true)
 
+#define MARK_TS_TYPE_NON_COMMON(C)                     \
+  (MARK_TS_TYPE_WITH_LANG_SPECIFIC (C),                        \
+   tree_contains_struct[C][TS_TYPE_NON_COMMON] = true) \
+
 #define MARK_TS_DECL_MINIMAL(C)                                \
   (MARK_TS_COMMON (C),                                 \
    tree_contains_struct[C][TS_DECL_MINIMAL] = true)