OSDN Git Service

Move language subdirectory Makefile processing into configure.lang.
[pf3gnuchains/gcc-fork.git] / gcc / tree.h
index ab2df45..ff73de4 100644 (file)
@@ -1,5 +1,5 @@
 /* Front-end tree definitions for GNU compiler.
-   Copyright (C) 1989, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1989, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -510,6 +510,8 @@ struct tree_common
 struct tree_int_cst
 {
   char common[sizeof (struct tree_common)];
+  struct rtx_def *rtl; /* acts as link to register transfer language
+                          (rtl) info */
   HOST_WIDE_INT int_cst_low;
   HOST_WIDE_INT int_cst_high;
 };
@@ -878,8 +880,9 @@ struct tree_type
 /*  For FIELD_DECLs, this is the
     RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE node that the field is
     a member of.  For VAR_DECL, PARM_DECL, FUNCTION_DECL, LABEL_DECL,
-    and CONST_DECL nodes, this points to the FUNCTION_DECL for the
-    containing function, or else yields NULL_TREE if the given decl has "file scope".  */
+    and CONST_DECL nodes, this points to either the FUNCTION_DECL for the
+    containing function, the RECORD_TYPE or UNION_TYPE for the containing
+    type, or NULL_TREE if the given decl has "file scope".  */
 #define DECL_CONTEXT(NODE) ((NODE)->decl.context)
 #define DECL_FIELD_CONTEXT(NODE) ((NODE)->decl.context)
 /* In a DECL this is the field where configuration dependent machine
@@ -1075,6 +1078,10 @@ struct tree_type
 /* Used to indicate that this DECL has weak linkage.  */
 #define DECL_WEAK(NODE) ((NODE)->decl.weak_flag)
 
+/* Used in TREE_PUBLIC decls to indicate that copies of this DECL in
+   multiple translation units should be merged.  */
+#define DECL_ONE_ONLY(NODE) ((NODE)->decl.transparent_union)
+
 /* Additional flags for language-specific uses.  */
 #define DECL_LANG_FLAG_0(NODE) ((NODE)->decl.lang_flag_0)
 #define DECL_LANG_FLAG_1(NODE) ((NODE)->decl.lang_flag_1)
@@ -1090,8 +1097,8 @@ struct tree_decl
   char common[sizeof (struct tree_common)];
   char *filename;
   int linenum;
-  union tree_node *size;
   unsigned int uid;
+  union tree_node *size;
 #ifdef ONLY_INT_FIELDS
   int mode : 8;
 #else
@@ -1126,6 +1133,15 @@ struct tree_decl
   unsigned lang_flag_6 : 1;
   unsigned lang_flag_7 : 1;
 
+  /* For a FUNCTION_DECL, if inline, this is the size of frame needed.
+     If built-in, this is the code for which built-in function.
+     For other kinds of decls, this is DECL_ALIGN.  */
+  union {
+    int i;
+    unsigned int u;
+    enum built_in_function f;
+  } frame_size;
+
   union tree_node *name;
   union tree_node *context;
   union tree_node *arguments;
@@ -1137,20 +1153,12 @@ struct tree_decl
   union tree_node *machine_attributes;
   struct rtx_def *rtl; /* acts as link to register transfer language
                                   (rtl) info */
-  /* For a FUNCTION_DECL, if inline, this is the size of frame needed.
-     If built-in, this is the code for which built-in function.
-     For other kinds of decls, this is DECL_ALIGN.  */
-  union {
-    int i;
-    unsigned int u;
-    enum built_in_function f;
-  } frame_size;
   /* For FUNCTION_DECLs: points to insn that constitutes its definition
      on the permanent obstack.  For any other kind of decl, this is the
      alignment.  */
   union {
     struct rtx_def *r;
-    int i;
+    HOST_WIDE_INT i;
   } saved_insns;
   union tree_node *vindex;
   /* Points to a structure whose details depend on the language in use.  */
@@ -1233,6 +1241,12 @@ extern tree make_tree_vec                PROTO((int));
 
 extern tree get_identifier             PROTO((char *));
 
+/* If an identifier with the name TEXT (a null-terminated string) has
+   previously been referred to, return that node; otherwise return
+   NULL_TREE.  */
+
+extern tree maybe_get_identifier       PROTO((char *));
+
 /* Construct various types of nodes.  */
 
 #define build_int_2(LO,HI)  \
@@ -1245,7 +1259,7 @@ extern tree build_parse_node              PVPROTO((enum tree_code, ...));
 extern tree build_int_2_wide           PROTO((HOST_WIDE_INT, HOST_WIDE_INT));
 extern tree build_real                 PROTO((tree, REAL_VALUE_TYPE));
 extern tree build_real_from_int_cst    PROTO((tree, tree));
-extern tree build_complex              PROTO((tree, tree));
+extern tree build_complex              PROTO((tree, tree, tree));
 extern tree build_string               PROTO((int, char *));
 extern tree build1                     PROTO((enum tree_code, tree, tree));
 extern tree build_tree_list            PROTO((tree, tree));
@@ -1534,7 +1548,9 @@ extern tree maybe_build_cleanup           PROTO((tree));
    look for nested component-refs or array-refs at constant positions
    and find the ultimate containing object, which is returned.  */
 
-extern tree get_inner_reference                PROTO((tree, int *, int *, tree *, enum machine_mode *, int *, int *));
+extern tree get_inner_reference                PROTO((tree, int *, int *, tree *,
+                                              enum machine_mode *, int *,
+                                              int *, int *));
 
 /* Return the FUNCTION_DECL which provides this _DECL with its context,
    or zero if none.  */
@@ -1623,9 +1639,15 @@ extern int current_function_calls_longjmp;
 
 extern int all_types_permanent;
 
-/* Pointer to function to compute the name to use to print a declaration.  */
+/* Pointer to function to compute the name to use to print a declaration.
+   DECL is the declaration in question.
+   VERBOSITY determines what information will be printed:
+     0: DECL_NAME, demangled as necessary.
+     1: and scope information.
+     2: and any other information that might be interesting, such as function
+        parameter types in C++.  */
 
-extern char *(*decl_printable_name) ();
+extern char *(*decl_printable_name) (/* tree decl, int verbosity */);
 
 /* Pointer to function to finish handling an incomplete decl at the
    end of compilation.  */
@@ -1634,9 +1656,9 @@ extern void (*incomplete_decl_finalize_hook) ();
 \f
 /* In tree.c */
 extern char *perm_calloc                       PROTO((int, long));
-extern tree get_set_constructor_bits           PROTO((tree, char*, int));
+extern tree get_set_constructor_bits           PROTO((tree, char *, int));
 extern tree get_set_constructor_bytes          PROTO((tree,
-                                                      unsigned char*, int));
+                                                      unsigned char *, int));
 \f
 /* In stmt.c */
 
@@ -1668,7 +1690,15 @@ extern void expand_null_return                   PROTO((void));
 extern void expand_return                      PROTO((tree));
 extern void expand_start_bindings              PROTO((int));
 extern void expand_end_bindings                        PROTO((tree, int, int));
+extern void start_cleanup_deferal              PROTO((void));
+extern void end_cleanup_deferal                        PROTO((void));
+extern void mark_block_as_eh_region            PROTO((void));
+extern void mark_block_as_not_eh_region                PROTO((void));
+extern int is_eh_region                                PROTO((void));
+extern int conditional_context                 PROTO((void));
 extern tree last_cleanup_this_contour          PROTO((void));
+extern int expand_dhc_cleanup                  PROTO((tree));
+extern int expand_dcc_cleanup                  PROTO((tree));
 extern void expand_start_case                  PROTO((int, tree, tree,
                                                       char *));
 extern void expand_end_case                    PROTO((tree));