aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2019-09-11 11:28:00 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2019-09-11 11:28:00 +0000
commit7994803c00a3aba210f76d3b61c53300c549969d (patch)
tree53238e6ab4a6b07c7a62af42261477fb24818efb /gcc
parent5a307ee54bca63865b6e5e8ad690720adf0b9d78 (diff)
downloadgcc-7994803c00a3aba210f76d3b61c53300c549969d.zip
gcc-7994803c00a3aba210f76d3b61c53300c549969d.tar.gz
gcc-7994803c00a3aba210f76d3b61c53300c549969d.tar.bz2
[PATCH] some tree struct marking
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/cp-objcp-common.c153
-rw-r--r--gcc/cp/decl.c16
-rw-r--r--gcc/tree.c82
-rw-r--r--gcc/tree.h4
6 files changed, 140 insertions, 126 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 85bb9ba..608f3b9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0c37460..8f266a2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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.
diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c
index 4c95180..4369a5b 100644
--- a/gcc/cp/cp-objcp-common.c
+++ b/gcc/cp/cp-objcp-common.c
@@ -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 ();
}
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 8bb398b..9218eef 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -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;
}
diff --git a/gcc/tree.c b/gcc/tree.c
index afd7020..6be756c 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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 ();
diff --git a/gcc/tree.h b/gcc/tree.h
index fc85572..3fc36a4 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -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)