aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-10-17 22:11:00 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2017-10-17 22:11:00 +0200
commit8e7014b45585b89418564db079f9ad469a581ea2 (patch)
tree288005a9e12bb983c162c9ab78066db8227ce818
parenteaf95345d33a727885761fa48d7481405614351a (diff)
downloadgcc-8e7014b45585b89418564db079f9ad469a581ea2.zip
gcc-8e7014b45585b89418564db079f9ad469a581ea2.tar.gz
gcc-8e7014b45585b89418564db079f9ad469a581ea2.tar.bz2
langhooks.h (struct lang_hooks): Document that tree_size langhook may be also called on tcc_type nodes.
* langhooks.h (struct lang_hooks): Document that tree_size langhook may be also called on tcc_type nodes. * langhooks.c (lhd_tree_size): Likewise. * gcc-interface/misc.c (gnat_tree_size): New function. (LANG_HOOKS_TREE_SIZE): Redefine. From-SVN: r253829
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/misc.c19
-rw-r--r--gcc/langhooks.c4
-rw-r--r--gcc/langhooks.h8
5 files changed, 36 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fed7c36..f7de684 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-17 Jakub Jelinek <jakub@redhat.com>
+
+ * langhooks.h (struct lang_hooks): Document that tree_size langhook
+ may be also called on tcc_type nodes.
+ * langhooks.c (lhd_tree_size): Likewise.
+
2017-10-17 David Malcolm <dmalcolm@redhat.com>
* gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 7708c58..7d50dbb 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-17 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc-interface/misc.c (gnat_tree_size): New function.
+ (LANG_HOOKS_TREE_SIZE): Redefine.
+
2017-10-14 Hristian Kirtchev <kirtchev@adacore.com>
* sem_elab.adb (In_Preelaborated_Context): A generic package subject to
diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index 081a63a..5083c71 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -343,6 +343,23 @@ internal_error_function (diagnostic_context *context, const char *msgid,
Compiler_Abort (sp, sp_loc, true);
}
+/* lang_hooks.tree_size: Determine the size of a tree with code C,
+ which is a language-specific tree code in category tcc_constant,
+ tcc_exceptional or tcc_type. The default expects never to be called. */
+
+static size_t
+gnat_tree_size (enum tree_code code)
+{
+ gcc_checking_assert (code >= NUM_TREE_CODES);
+ switch (code)
+ {
+ case UNCONSTRAINED_ARRAY_TYPE:
+ return sizeof (tree_type_non_common);
+ default:
+ gcc_unreachable ();
+ }
+}
+
/* Perform all the initialization steps that are language-specific. */
static bool
@@ -1387,6 +1404,8 @@ get_lang_specific (tree node)
#define LANG_HOOKS_NAME "GNU Ada"
#undef LANG_HOOKS_IDENTIFIER_SIZE
#define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct tree_identifier)
+#undef LANG_HOOKS_TREE_SIZE
+#define LANG_HOOKS_TREE_SIZE gnat_tree_size
#undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT gnat_init
#undef LANG_HOOKS_OPTION_LANG_MASK
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index c54b790..9b3212b 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -266,8 +266,8 @@ lhd_gimplify_expr (tree *expr_p ATTRIBUTE_UNUSED,
}
/* lang_hooks.tree_size: Determine the size of a tree with code C,
- which is a language-specific tree code in category tcc_constant or
- tcc_exceptional. The default expects never to be called. */
+ which is a language-specific tree code in category tcc_constant,
+ tcc_exceptional or tcc_type. The default expects never to be called. */
size_t
lhd_tree_size (enum tree_code c ATTRIBUTE_UNUSED)
{
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
index b0c9829..d1288f1 100644
--- a/gcc/langhooks.h
+++ b/gcc/langhooks.h
@@ -307,10 +307,10 @@ struct lang_hooks
/* Remove any parts of the tree that are used only by the FE. */
void (*free_lang_data) (tree);
- /* Determines the size of any language-specific tcc_constant or
- tcc_exceptional nodes. Since it is called from make_node, the
- only information available is the tree code. Expected to die
- on unrecognized codes. */
+ /* Determines the size of any language-specific tcc_constant,
+ tcc_exceptional or tcc_type nodes. Since it is called from
+ make_node, the only information available is the tree code.
+ Expected to die on unrecognized codes. */
size_t (*tree_size) (enum tree_code);
/* Return the language mask used for converting argv into a sequence