OSDN Git Service

ch:
[pf3gnuchains/gcc-fork.git] / gcc / tree.h
index 067af98..c00fafd 100644 (file)
@@ -96,6 +96,9 @@ enum built_in_function
 
 /* Names for the above.  */
 extern const char *const built_in_names[(int) END_BUILTINS];
+
+/* An array of _DECL trees for the above.  */
+extern union tree_node *built_in_decls[(int) END_BUILTINS];
 \f
 /* The definition of tree nodes fills the next several pages.  */
 
@@ -655,8 +658,9 @@ extern void tree_class_check_failed PARAMS ((const tree, int,
    If the data type is signed, the value is sign-extended to 2 words
    even though not all of them may really be in use.
    In an unsigned constant shorter than 2 words, the extra bits are 0.  */
-#define TREE_INT_CST_LOW(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst_low)
-#define TREE_INT_CST_HIGH(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst_high)
+#define TREE_INT_CST(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst)
+#define TREE_INT_CST_LOW(NODE) (TREE_INT_CST (NODE).low)
+#define TREE_INT_CST_HIGH(NODE) (TREE_INT_CST (NODE).high)
 
 #define INT_CST_LT(A, B)  \
 (TREE_INT_CST_HIGH (A) < TREE_INT_CST_HIGH (B)                 \
@@ -675,8 +679,13 @@ struct tree_int_cst
   struct tree_common common;
   struct rtx_def *rtl; /* acts as link to register transfer language
                           (rtl) info */
-  unsigned HOST_WIDE_INT int_cst_low;
-  HOST_WIDE_INT int_cst_high;
+  /* A sub-struct is necessary here because the function `const_hash'
+     wants to scan both words as a unit and taking the address of the
+     sub-struct yields the properly inclusive bounded pointer.  */
+  struct {
+    unsigned HOST_WIDE_INT low;
+    HOST_WIDE_INT high;
+  } int_cst;
 };
 
 /* In REAL_CST, STRING_CST, COMPLEX_CST nodes, and CONSTRUCTOR nodes,
@@ -737,7 +746,7 @@ struct tree_identifier
 {
   struct tree_common common;
   int length;
-  char *pointer;
+  const char *pointer;
 };
 
 /* In a TREE_LIST node.  */
@@ -1377,11 +1386,10 @@ struct tree_type
 #define DECL_ORIGIN(NODE) \
   (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : NODE)
 
-/* Nonzero for any sort of ..._DECL node means this decl node represents
-   an inline instance of some original (abstract) decl from an inline function;
-   suppress any warnings about shadowing some other variable.
-   FUNCTION_DECL nodes can also have their abstract origin set to themselves
-   (see save_for_inline_copying).  */
+/* Nonzero for any sort of ..._DECL node means this decl node represents an
+   inline instance of some original (abstract) decl from an inline function;
+   suppress any warnings about shadowing some other variable.  FUNCTION_DECL
+   nodes can also have their abstract origin set to themselves. */
 #define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != (tree) 0 \
                                && DECL_ABSTRACT_ORIGIN (NODE) != (NODE))
 
@@ -1855,6 +1863,11 @@ extern char *permalloc                   PARAMS ((int));
 extern char *savealloc                 PARAMS ((int));
 extern char *expralloc                 PARAMS ((int));
 
+/* Compute the number of bytes occupied by 'node'.  This routine only
+   looks at TREE_CODE and, if the code is TREE_VEC, TREE_VEC_LENGTH.  */
+
+extern size_t tree_size                        PARAMS ((tree));
+
 /* Lowest level primitive for allocating a node.
    The TREE_CODE is the only argument.  Contents are initialized
    to zero except for a few of the common fields.  */
@@ -1937,6 +1950,7 @@ extern int attribute_list_equal           PARAMS ((tree, tree));
 extern int attribute_list_contained    PARAMS ((tree, tree));
 extern int tree_int_cst_equal          PARAMS ((tree, tree));
 extern int tree_int_cst_lt             PARAMS ((tree, tree));
+extern int tree_int_cst_compare         PARAMS ((tree, tree));
 extern int host_integerp               PARAMS ((tree, int));
 extern HOST_WIDE_INT tree_low_cst      PARAMS ((tree, int));
 extern int tree_int_cst_msb            PARAMS ((tree));
@@ -2435,7 +2449,7 @@ extern tree builtin_function                      PARAMS ((const char *, tree, int,
 \f
 /* In tree.c */
 extern char *perm_calloc                       PARAMS ((int, long));
-extern tree get_file_function_name             PARAMS ((int));
+extern void clean_symbol_name                  PARAMS ((char *));
 extern tree get_file_function_name_long        PARAMS ((const char *));
 extern tree get_set_constructor_bits           PARAMS ((tree, char *, int));
 extern tree get_set_constructor_bytes          PARAMS ((tree,
@@ -2491,6 +2505,8 @@ extern int expand_dcc_cleanup                     PARAMS ((tree));
 extern void expand_start_case                  PARAMS ((int, tree, tree,
                                                       const char *));
 extern void expand_end_case                    PARAMS ((tree));
+extern int add_case_node                        PARAMS ((tree, tree,
+                                                        tree, tree *));
 extern int pushcase                            PARAMS ((tree,
                                                       tree (*) (tree, tree),
                                                       tree, tree *));
@@ -2648,7 +2664,6 @@ extern void preserve_momentary            PARAMS ((void));
 extern void saveable_allocation                PARAMS ((void));
 extern void temporary_allocation       PARAMS ((void));
 extern void resume_temporary_allocation        PARAMS ((void));
-extern tree get_file_function_name     PARAMS ((int));
 extern void set_identifier_size                PARAMS ((int));
 extern int int_fits_type_p             PARAMS ((tree, tree));
 extern int tree_log2                   PARAMS ((tree));
@@ -2778,8 +2793,7 @@ extern int global_bindings_p              PARAMS ((void));
 extern void insert_block               PARAMS ((tree));
 
 /* In integrate.c */
-extern void save_for_inline_nocopy     PARAMS ((tree));
-extern void save_for_inline_copying    PARAMS ((tree));
+extern void save_for_inline            PARAMS ((tree));
 extern void set_decl_abstract_flags    PARAMS ((tree, int));
 extern void output_inline_function     PARAMS ((tree));
 extern void set_decl_origin_self       PARAMS ((tree));