aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2017-10-17 14:49:05 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2017-10-17 14:49:05 +0000
commitf419fd1f8fcb77978b70225f670167a91b323893 (patch)
tree0a9abc2a8f40b61202554b123b8a167f236f726b /gcc
parent07c0e0ad79473125b8ad2737f5af746e5247c0ea (diff)
downloadgcc-f419fd1f8fcb77978b70225f670167a91b323893.zip
gcc-f419fd1f8fcb77978b70225f670167a91b323893.tar.gz
gcc-f419fd1f8fcb77978b70225f670167a91b323893.tar.bz2
[PATCH PR/82546] tree node size
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00899.html PR middle-end/82546 gcc/ * tree.c (tree_code_size): Reformat. Punt to lang hook for unknown TYPE nodes. gcc/cp/ * cp-objcp-common.c (cp_tree_size): Reformat. Adjust returns size of TYPE nodes. gcc/objc/ * objc-act.c (objc_common_tree_size): Return size of TYPE nodes. From-SVN: r253817
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/cp-objcp-common.c53
-rw-r--r--gcc/objc/ChangeLog4
-rw-r--r--gcc/objc/objc-act.c9
-rw-r--r--gcc/tree.c105
6 files changed, 104 insertions, 79 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b53ae8b..02d8e31 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-17 Nathan Sidwell <nathan@acm.org>
+
+ PR middle-end/82546
+ * tree.c (tree_code_size): Reformat. Punt to lang hook for unknown
+ TYPE nodes.
+
2017-10-17 Qing Zhao <qing.zhao@oracle.com>
Wilco Dijkstra <wilco.dijkstra@arm.com>
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2b6e3b6..621efed 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-17 Nathan Sidwell <nathan@acm.org>
+
+ PR middle-end/82546
+ * cp-objcp-common.c (cp_tree_size): Reformat. Adjust returns size
+ of TYPE nodes.
+
2017-10-13 Jason Merrill <jason@redhat.com>
PR c++/82357 - bit-field in template
diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c
index f251b05..e051d66 100644
--- a/gcc/cp/cp-objcp-common.c
+++ b/gcc/cp/cp-objcp-common.c
@@ -61,43 +61,34 @@ cxx_warn_unused_global_decl (const_tree decl)
size_t
cp_tree_size (enum tree_code code)
{
+ gcc_checking_assert (code >= NUM_TREE_CODES);
switch (code)
{
- case PTRMEM_CST: return sizeof (struct ptrmem_cst);
- case BASELINK: return sizeof (struct tree_baselink);
+ case PTRMEM_CST: return sizeof (ptrmem_cst);
+ case BASELINK: return sizeof (tree_baselink);
case TEMPLATE_PARM_INDEX: return sizeof (template_parm_index);
- case DEFAULT_ARG: return sizeof (struct tree_default_arg);
- case DEFERRED_NOEXCEPT: return sizeof (struct tree_deferred_noexcept);
- case OVERLOAD: return sizeof (struct tree_overload);
- case STATIC_ASSERT: return sizeof (struct tree_static_assert);
+ case DEFAULT_ARG: return sizeof (tree_default_arg);
+ case DEFERRED_NOEXCEPT: return sizeof (tree_deferred_noexcept);
+ case OVERLOAD: return sizeof (tree_overload);
+ case STATIC_ASSERT: return sizeof (tree_static_assert);
case TYPE_ARGUMENT_PACK:
- case TYPE_PACK_EXPANSION:
- return sizeof (struct tree_common);
-
+ case TYPE_PACK_EXPANSION: return sizeof (tree_type_non_common);
case NONTYPE_ARGUMENT_PACK:
- case EXPR_PACK_EXPANSION:
- return sizeof (struct tree_exp);
-
- case ARGUMENT_PACK_SELECT:
- return sizeof (struct tree_argument_pack_select);
-
- case TRAIT_EXPR:
- return sizeof (struct tree_trait_expr);
-
- case LAMBDA_EXPR: return sizeof (struct tree_lambda_expr);
-
- case TEMPLATE_INFO: return sizeof (struct tree_template_info);
-
- case CONSTRAINT_INFO: return sizeof (struct tree_constraint_info);
-
- case USERDEF_LITERAL: return sizeof (struct tree_userdef_literal);
-
- case TEMPLATE_DECL: return sizeof (struct tree_template_decl);
-
+ case EXPR_PACK_EXPANSION: return sizeof (tree_exp);
+ case ARGUMENT_PACK_SELECT: return sizeof (tree_argument_pack_select);
+ case TRAIT_EXPR: return sizeof (tree_trait_expr);
+ case LAMBDA_EXPR: return sizeof (tree_lambda_expr);
+ case TEMPLATE_INFO: return sizeof (tree_template_info);
+ case CONSTRAINT_INFO: return sizeof (tree_constraint_info);
+ case USERDEF_LITERAL: return sizeof (tree_userdef_literal);
+ case TEMPLATE_DECL: return sizeof (tree_template_decl);
default:
- if (TREE_CODE_CLASS (code) == tcc_declaration)
- return sizeof (struct tree_decl_non_common);
- gcc_unreachable ();
+ switch (TREE_CODE_CLASS (code))
+ {
+ case tcc_declaration: return sizeof (tree_decl_non_common);
+ case tcc_type: return sizeof (tree_type_non_common);
+ default: gcc_unreachable ();
+ }
}
/* NOTREACHED */
}
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 20b0fe4..a387814 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,7 @@
+2017-10-17 Nathan Sidwell <nathan@acm.org>
+
+ * objc-act.c (objc_common_tree_size): Return size of TYPE nodes.
+
2017-10-10 Richard Sandiford <richard.sandiford@linaro.org>
* objc-act.c (objc_decl_method_attributes): Use wi::to_wide when
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index ce2adcc..765192c 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -10118,11 +10118,14 @@ objc_common_tree_size (enum tree_code code)
case CLASS_METHOD_DECL:
case INSTANCE_METHOD_DECL:
case KEYWORD_DECL:
- case PROPERTY_DECL:
- return sizeof (struct tree_decl_non_common);
+ case PROPERTY_DECL: return sizeof (tree_decl_non_common);
+ case CLASS_INTERFACE_TYPE:
+ case CLASS_IMPLEMENTATION_TYPE:
+ case CATEGORY_INTERFACE_TYPE:
+ case CATEGORY_IMPLEMENTATION_TYPE:
+ case PROTOCOL_INTERFACE_TYPE: return sizeof (tree_type_non_common);
default:
gcc_unreachable ();
-
}
}
diff --git a/gcc/tree.c b/gcc/tree.c
index 5662f28..cd77f08 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -763,40 +763,53 @@ tree_code_size (enum tree_code code)
switch (TREE_CODE_CLASS (code))
{
case tcc_declaration: /* A decl node */
- {
- switch (code)
- {
- case FIELD_DECL:
- return sizeof (struct tree_field_decl);
- case PARM_DECL:
- return sizeof (struct tree_parm_decl);
- case VAR_DECL:
- return sizeof (struct tree_var_decl);
- case LABEL_DECL:
- return sizeof (struct tree_label_decl);
- case RESULT_DECL:
- return sizeof (struct tree_result_decl);
- case CONST_DECL:
- return sizeof (struct tree_const_decl);
- case TYPE_DECL:
- return sizeof (struct tree_type_decl);
- case FUNCTION_DECL:
- return sizeof (struct tree_function_decl);
- case DEBUG_EXPR_DECL:
- return sizeof (struct tree_decl_with_rtl);
- case TRANSLATION_UNIT_DECL:
- return sizeof (struct tree_translation_unit_decl);
- case NAMESPACE_DECL:
- case IMPORTED_DECL:
- case NAMELIST_DECL:
- return sizeof (struct tree_decl_non_common);
- default:
- return lang_hooks.tree_size (code);
- }
- }
+ switch (code)
+ {
+ case FIELD_DECL: return sizeof (tree_field_decl);
+ case PARM_DECL: return sizeof (tree_parm_decl);
+ case VAR_DECL: return sizeof (tree_var_decl);
+ case LABEL_DECL: return sizeof (tree_label_decl);
+ case RESULT_DECL: return sizeof (tree_result_decl);
+ case CONST_DECL: return sizeof (tree_const_decl);
+ case TYPE_DECL: return sizeof (tree_type_decl);
+ case FUNCTION_DECL: return sizeof (tree_function_decl);
+ case DEBUG_EXPR_DECL: return sizeof (tree_decl_with_rtl);
+ case TRANSLATION_UNIT_DECL: return sizeof (tree_translation_unit_decl);
+ case NAMESPACE_DECL:
+ case IMPORTED_DECL:
+ case NAMELIST_DECL: return sizeof (tree_decl_non_common);
+ default:
+ gcc_checking_assert (code >= NUM_TREE_CODES);
+ return lang_hooks.tree_size (code);
+ }
case tcc_type: /* a type node */
- return sizeof (struct tree_type_non_common);
+ switch (code)
+ {
+ case OFFSET_TYPE:
+ case ENUMERAL_TYPE:
+ case BOOLEAN_TYPE:
+ case INTEGER_TYPE:
+ case REAL_TYPE:
+ case POINTER_TYPE:
+ case REFERENCE_TYPE:
+ case NULLPTR_TYPE:
+ case FIXED_POINT_TYPE:
+ case COMPLEX_TYPE:
+ case VECTOR_TYPE:
+ case ARRAY_TYPE:
+ case RECORD_TYPE:
+ case UNION_TYPE:
+ case QUAL_UNION_TYPE:
+ case VOID_TYPE:
+ case POINTER_BOUNDS_TYPE:
+ case FUNCTION_TYPE:
+ case METHOD_TYPE:
+ case LANG_TYPE: return sizeof (tree_type_non_common);
+ default:
+ gcc_checking_assert (code >= NUM_TREE_CODES);
+ return lang_hooks.tree_size (code);
+ }
case tcc_reference: /* a reference */
case tcc_expression: /* an expression */
@@ -810,14 +823,15 @@ tree_code_size (enum tree_code code)
case tcc_constant: /* a constant */
switch (code)
{
- case VOID_CST: return sizeof (struct tree_typed);
+ case VOID_CST: return sizeof (tree_typed);
case INTEGER_CST: gcc_unreachable ();
- case REAL_CST: return sizeof (struct tree_real_cst);
- case FIXED_CST: return sizeof (struct tree_fixed_cst);
- case COMPLEX_CST: return sizeof (struct tree_complex);
- case VECTOR_CST: return sizeof (struct tree_vector);
+ case REAL_CST: return sizeof (tree_real_cst);
+ case FIXED_CST: return sizeof (tree_fixed_cst);
+ case COMPLEX_CST: return sizeof (tree_complex);
+ case VECTOR_CST: return sizeof (tree_vector);
case STRING_CST: gcc_unreachable ();
default:
+ gcc_checking_assert (code >= NUM_TREE_CODES);
return lang_hooks.tree_size (code);
}
@@ -825,23 +839,24 @@ tree_code_size (enum tree_code code)
switch (code)
{
case IDENTIFIER_NODE: return lang_hooks.identifier_size;
- case TREE_LIST: return sizeof (struct tree_list);
+ case TREE_LIST: return sizeof (tree_list);
case ERROR_MARK:
- case PLACEHOLDER_EXPR: return sizeof (struct tree_common);
+ case PLACEHOLDER_EXPR: return sizeof (tree_common);
- case TREE_VEC:
+ case TREE_VEC: gcc_unreachable ();
case OMP_CLAUSE: gcc_unreachable ();
- case SSA_NAME: return sizeof (struct tree_ssa_name);
+ case SSA_NAME: return sizeof (tree_ssa_name);
- case STATEMENT_LIST: return sizeof (struct tree_statement_list);
+ case STATEMENT_LIST: return sizeof (tree_statement_list);
case BLOCK: return sizeof (struct tree_block);
- case CONSTRUCTOR: return sizeof (struct tree_constructor);
- case OPTIMIZATION_NODE: return sizeof (struct tree_optimization_option);
- case TARGET_OPTION_NODE: return sizeof (struct tree_target_option);
+ case CONSTRUCTOR: return sizeof (tree_constructor);
+ case OPTIMIZATION_NODE: return sizeof (tree_optimization_option);
+ case TARGET_OPTION_NODE: return sizeof (tree_target_option);
default:
+ gcc_checking_assert (code >= NUM_TREE_CODES);
return lang_hooks.tree_size (code);
}