OSDN Git Service

* update_web_docs, doc_exclude: Check out files that may be in the
[pf3gnuchains/gcc-fork.git] / gcc / tree.h
index a394a31..8634acb 100644 (file)
@@ -84,7 +84,7 @@ extern const char *const built_in_class_names[4];
 /* Codes that identify the various built in functions
    so that expand_call can identify them quickly.  */
 
-#define DEF_BUILTIN(x) x,
+#define DEF_BUILTIN(ENUM, N, C, T, LT, B, F, NA) ENUM,
 enum built_in_function
 {
 #include "builtins.def"
@@ -188,7 +188,7 @@ struct tree_common
        TREE_OVERFLOW in
            INTEGER_CST, REAL_CST, COMPLEX_CST
        TREE_PUBLIC in
-           VAR_DECL or FUNCTION_DECL
+           VAR_DECL or FUNCTION_DECL or IDENTIFIER_NODE
        TREE_VIA_PUBLIC in
            TREE_LIST or TREE_VEC
        EXPR_WFL_EMIT_LINE_NOTE in
@@ -261,7 +261,8 @@ struct tree_common
    bounded_flag:
 
        TREE_BOUNDED in
-          expressions, VAR_DECL, PARM_DECL, FIELD_DECL, FUNCTION_DECL
+          expressions, VAR_DECL, PARM_DECL, FIELD_DECL, FUNCTION_DECL,
+          IDENTIFIER_NODE
        TYPE_BOUNDED in
           ..._TYPE
 */
@@ -517,7 +518,7 @@ extern void tree_class_check_failed PARAMS ((const tree, int,
 
 /* In a VAR_DECL or FUNCTION_DECL,
    nonzero means name is to be accessible from outside this module.
-   In an identifier node, nonzero means an external declaration
+   In an IDENTIFIER_NODE, nonzero means an external declaration
    accessible from outside this module was previously seen
    for this name in an inner scope.  */
 #define TREE_PUBLIC(NODE) ((NODE)->common.public_flag)
@@ -728,16 +729,27 @@ struct tree_complex
   union tree_node *imag;
 };
 \f
+#include "hashtable.h"
+
 /* Define fields and accessors for some special-purpose tree nodes.  */
 
-#define IDENTIFIER_LENGTH(NODE) (IDENTIFIER_NODE_CHECK (NODE)->identifier.length)
-#define IDENTIFIER_POINTER(NODE) (IDENTIFIER_NODE_CHECK (NODE)->identifier.pointer)
+#define IDENTIFIER_LENGTH(NODE) \
+       (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.len)
+#define IDENTIFIER_POINTER(NODE) \
+       ((char *) IDENTIFIER_NODE_CHECK (NODE)->identifier.id.str)
+
+/* Translate a hash table identifier pointer to a tree_identifier
+   pointer, and vice versa.  */
+
+#define HT_IDENT_TO_GCC_IDENT(NODE) \
+       ((tree) ((char *) (NODE) - sizeof (struct tree_common)))
+#define GCC_IDENT_TO_HT_IDENT(NODE) \
+       (&((struct tree_identifier *) (NODE))->id)
 
 struct tree_identifier
 {
   struct tree_common common;
-  int length;
-  const char *pointer;
+  struct ht_identifier id;
 };
 
 /* In a TREE_LIST node.  */
@@ -1952,13 +1964,6 @@ extern tree get_identifier               PARAMS ((const char *));
 
 extern tree maybe_get_identifier       PARAMS ((const char *));
 
-/* Look up an identifier with the name TEXT, replace its identifier
-   node with NODE, and return the old identifier node.  This is used
-   by languages which need to enable and disable keywords based on
-   context; e.g. see remember_protocol_qualifiers in objc/objc-act.c.  */
-
-extern tree set_identifier             PARAMS ((const char *, tree));
-
 /* Construct various types of nodes.  */
 
 #define build_int_2(LO,HI)  \
@@ -2060,12 +2065,14 @@ extern tree lookup_attribute            PARAMS ((const char *, tree));
 
 extern tree merge_attributes           PARAMS ((tree, tree));
 
-/* Given a type node TYPE and a TYPE_QUALIFIER_SET, return a type for
-   the same kind of data as TYPE describes.  Variants point to the
-   "main variant" (which has no qualifiers set) via TYPE_MAIN_VARIANT,
-   and it points to a chain of other variants so that duplicate
-   variants are never made.  Only main variants should ever appear as
-   types of expressions.  */
+/* Return a version of the TYPE, qualified as indicated by the
+   TYPE_QUALS, if one exists.  If no qualified version exists yet,
+   return NULL_TREE.  */
+
+extern tree get_qualified_type          PARAMS ((tree, int));
+
+/* Like get_qualified_type, but creates the type if it does not
+   exist.  This function never returns NULL_TREE.  */
 
 extern tree build_qualified_type        PARAMS ((tree, int));
 
@@ -2111,12 +2118,17 @@ typedef struct record_layout_info_s
   unsigned int record_align;
   /* The alignment of the record so far, not including padding, in bits.  */
   unsigned int unpacked_align;
+  /* The alignment of the record so far, allowing for the record to be
+     padded only at the end, in bits.  */
+  unsigned int unpadded_align;
   /* The static variables (i.e., class variables, as opposed to
      instance variables) encountered in T.  */
   tree pending_statics;
   int packed_maybe_necessary;
 } *record_layout_info;
 
+extern void set_lang_adjust_rli                PARAMS ((void (*) PARAMS
+                                                ((record_layout_info))));
 extern record_layout_info start_record_layout PARAMS ((tree));
 extern tree bit_from_pos               PARAMS ((tree, tree));
 extern tree byte_from_pos              PARAMS ((tree, tree));
@@ -2453,10 +2465,6 @@ extern const char *input_filename;
 /* Current line number in input file.  */
 extern int lineno;
 
-/* Nonzero for -pedantic switch: warn about anything
-   that standard C forbids.  */
-extern int pedantic;
-
 /* Nonzero means lvalues are limited to those valid in pedantic ANSI C.
    Zero means allow extended lvalues.  */
 
@@ -2513,6 +2521,7 @@ extern tree get_set_constructor_bytes             PARAMS ((tree,
                                                       unsigned char *, int));
 extern tree get_callee_fndecl                   PARAMS ((tree));
 extern void set_decl_assembler_name             PARAMS ((tree));
+extern int type_num_arguments                   PARAMS ((tree));
 \f
 /* In stmt.c */
 
@@ -2554,13 +2563,8 @@ extern void start_cleanup_deferral               PARAMS ((void));
 extern void end_cleanup_deferral               PARAMS ((void));
 extern int is_body_block                       PARAMS ((tree));
 
-extern void mark_block_as_eh_region            PARAMS ((void));
-extern void mark_block_as_not_eh_region                PARAMS ((void));
-extern int is_eh_region                                PARAMS ((void));
 extern int conditional_context                 PARAMS ((void));
 extern tree last_cleanup_this_contour          PARAMS ((void));
-extern int expand_dhc_cleanup                  PARAMS ((tree));
-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));
@@ -2716,10 +2720,10 @@ extern void print_obstack_name          PARAMS ((char *, FILE *,
 #endif
 extern void expand_function_end                PARAMS ((const char *, int, int));
 extern void expand_function_start      PARAMS ((tree, int));
+extern void expand_pending_sizes        PARAMS ((tree));
 
 extern int real_onep                   PARAMS ((tree));
 extern int real_twop                   PARAMS ((tree));
-extern void start_identifier_warnings  PARAMS ((void));
 extern void gcc_obstack_init           PARAMS ((struct obstack *));
 extern void init_obstacks              PARAMS ((void));
 extern void build_common_tree_nodes    PARAMS ((int));