diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-10-17 22:11:00 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-10-17 22:11:00 +0200 |
commit | 8e7014b45585b89418564db079f9ad469a581ea2 (patch) | |
tree | 288005a9e12bb983c162c9ab78066db8227ce818 | |
parent | eaf95345d33a727885761fa48d7481405614351a (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/misc.c | 19 | ||||
-rw-r--r-- | gcc/langhooks.c | 4 | ||||
-rw-r--r-- | gcc/langhooks.h | 8 |
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 |