OSDN Git Service

* langhooks.h (struct lang_hooks): Add staticp.
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Dec 2001 22:49:20 +0000 (22:49 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Dec 2001 22:49:20 +0000 (22:49 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47628 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/langhooks-def.h
gcc/langhooks.c
gcc/langhooks.h
gcc/tree.c

index b968b3b..22242e2 100644 (file)
@@ -1,3 +1,12 @@
+2001-12-04  Joseph S. Myers  <jsm28@cam.ac.uk>
+
+       * 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  <neil@daikokuya.demon.co.uk>
 
        * cppspec.c (lang_specific_driver): Set is_cpp_driver.
index 1ee631b..910d1f5 100644 (file)
@@ -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, \
index 8ae3055..5e00986 100644 (file)
@@ -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
index 0519d21..8ce5674 100644 (file)
@@ -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;
 
index 5cbf59c..c21f913 100644 (file)
@@ -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;
     }
 }
 \f