From: Joseph Myers Date: Tue, 4 Dec 2001 22:49:20 +0000 (+0000) Subject: langhooks.h (struct lang_hooks): Add staticp. X-Git-Tag: prereleases/libstdc++-3.0.95~496 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d062a680ab959bc09d0f2572ac16e444b5396aa4;p=thirdparty%2Fgcc.git langhooks.h (struct lang_hooks): Add staticp. * langhooks.h (struct lang_hooks): Add staticp. * langhooks-def.h (lhd_staticp, LANG_HOOKS_STATICP): New. (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_STATICP. * langhooks.c (lhd_staticp): New function. * tree.c (staticp): Call lang_hooks.staticp for language-specific tree codes. From-SVN: r47628 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b968b3bce1ab..22242e2274d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2001-12-04 Joseph S. Myers + + * langhooks.h (struct lang_hooks): Add staticp. + * langhooks-def.h (lhd_staticp, LANG_HOOKS_STATICP): New. + (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_STATICP. + * langhooks.c (lhd_staticp): New function. + * tree.c (staticp): Call lang_hooks.staticp for language-specific + tree codes. + 2001-12-04 Neil Booth * cppspec.c (lang_specific_driver): Set is_cpp_driver. diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index 1ee631b1e759..910d1f543594 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -42,6 +42,7 @@ extern int lhd_decode_option PARAMS ((int, char **)); extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree)); extern tree lhd_return_tree PARAMS ((tree)); extern int lhd_safe_from_p PARAMS ((rtx, tree)); +extern int lhd_staticp PARAMS ((tree)); extern void lhd_clear_binding_stack PARAMS ((void)); extern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int)); extern void lhd_set_yydebug PARAMS ((int)); @@ -71,6 +72,7 @@ int lhd_tree_inlining_anon_aggr_type_p PARAMS ((tree)); #define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set #define LANG_HOOKS_EXPAND_CONSTANT lhd_return_tree #define LANG_HOOKS_SAFE_FROM_P lhd_safe_from_p +#define LANG_HOOKS_STATICP lhd_staticp #define LANG_HOOKS_HONOR_READONLY false #define LANG_HOOKS_PRINT_STATISTICS lhd_do_nothing #define LANG_HOOKS_PRINT_XNODE lhd_print_tree_nothing @@ -132,6 +134,7 @@ int lhd_tree_dump_type_quals PARAMS ((tree)); LANG_HOOKS_GET_ALIAS_SET, \ LANG_HOOKS_EXPAND_CONSTANT, \ LANG_HOOKS_SAFE_FROM_P, \ + LANG_HOOKS_STATICP, \ LANG_HOOKS_HONOR_READONLY, \ LANG_HOOKS_PRINT_STATISTICS, \ LANG_HOOKS_PRINT_XNODE, \ diff --git a/gcc/langhooks.c b/gcc/langhooks.c index 8ae3055d2682..5e0098680e35 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -77,6 +77,15 @@ lhd_safe_from_p (x, exp) return 1; } +/* Called from staticp. */ + +int +lhd_staticp (exp) + tree exp; +{ + return 0; +} + /* Called when -dy is given on the command line. */ void diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 0519d21bbfe8..8ce5674ebe9d 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -123,6 +123,9 @@ struct lang_hooks parameter. */ int (*safe_from_p) PARAMS ((rtx, tree)); + /* Hook called by staticp for language-specific tree codes. */ + int (*staticp) PARAMS ((tree)); + /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */ bool honor_readonly; diff --git a/gcc/tree.c b/gcc/tree.c index 5cbf59c5cba8..c21f91322111 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1518,7 +1518,11 @@ staticp (arg) return staticp (TREE_OPERAND (arg, 0)); default: - return 0; + if ((unsigned int) TREE_CODE (arg) + >= (unsigned int) LAST_AND_UNUSED_TREE_CODE) + return (*lang_hooks.staticp) (arg); + else + return 0; } }