summaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h32
1 files changed, 18 insertions, 14 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 02fa95b82f1..a5a6d5192ad 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1,5 +1,6 @@
/* Front-end tree definitions for GNU compiler.
- Copyright (C) 1989, 93-98, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+ Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -1045,9 +1046,11 @@ struct tree_type
#define BINFO_VPTR_FIELD(NODE) TREE_VEC_ELT ((NODE), 5)
/* The size of a base class subobject of this type. Not all frontends
- currently allocate the space for this field. */
+ currently allocate the space for these fields. */
#define BINFO_SIZE(NODE) TREE_VEC_ELT ((NODE), 6)
+#define BINFO_SIZE_UNIT(NODE) TREE_VEC_ELT ((NODE), 7)
#define TYPE_BINFO_SIZE(NODE) BINFO_SIZE (TYPE_BINFO (NODE))
+#define TYPE_BINFO_SIZE_UNIT(NODE) BINFO_SIZE_UNIT (TYPE_BINFO (NODE))
/* Slot used to build a chain that represents a use of inheritance.
For example, if X is derived from Y, and Y is derived from Z,
@@ -1113,16 +1116,18 @@ struct tree_type
#define DECL_INITIAL(NODE) (DECL_CHECK (NODE)->decl.initial)
/* For a PARM_DECL, records the data type used to pass the argument,
which may be different from the type seen in the program. */
-#define DECL_ARG_TYPE(NODE) (DECL_CHECK (NODE)->decl.initial) /* In PARM_DECL. */
+#define DECL_ARG_TYPE(NODE) (DECL_CHECK (NODE)->decl.initial)
/* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which
if nonzero, indicates that the field occupies the type. */
#define DECL_QUALIFIER(NODE) (DECL_CHECK (NODE)->decl.initial)
/* These two fields describe where in the source code the declaration was. */
#define DECL_SOURCE_FILE(NODE) (DECL_CHECK (NODE)->decl.filename)
#define DECL_SOURCE_LINE(NODE) (DECL_CHECK (NODE)->decl.linenum)
-/* Holds the size of the datum, as a tree expression.
+/* Holds the size of the datum, in bits, as a tree expression.
Need not be constant. */
#define DECL_SIZE(NODE) (DECL_CHECK (NODE)->decl.size)
+/* Likewise for the size in bytes. */
+#define DECL_SIZE_UNIT(NODE) (DECL_CHECK (NODE)->decl.size_unit)
/* Holds the alignment required for the datum. */
#define DECL_ALIGN(NODE) (DECL_CHECK (NODE)->decl.frame_size.u)
/* Holds the machine mode corresponding to the declaration of a variable or
@@ -1417,11 +1422,12 @@ struct tree_decl
} f;
} frame_size;
+ union tree_node *size_unit;
union tree_node *name;
union tree_node *context;
- union tree_node *arguments;
- union tree_node *result;
- union tree_node *initial;
+ union tree_node *arguments; /* Also used for DECL_FIELD_BITPOS */
+ union tree_node *result; /* Also used for DECL_BIT_FIELD_TYPE */
+ union tree_node *initial; /* Also used for DECL_QUALIFIER */
union tree_node *abstract_origin;
union tree_node *assembler_name;
union tree_node *section_name;
@@ -1429,6 +1435,7 @@ struct tree_decl
struct rtx_def *rtl; /* acts as link to register transfer language
(rtl) info */
struct rtx_def *live_range_rtl;
+
/* For FUNCTION_DECLs: points to insn that constitutes its definition
on the permanent obstack. For FIELD_DECL, this is DECL_FIELD_SIZE. */
union {
@@ -1773,13 +1780,10 @@ extern tree size_in_bytes PARAMS ((tree));
extern HOST_WIDE_INT int_size_in_bytes PARAMS ((tree));
extern tree size_binop PARAMS ((enum tree_code, tree, tree));
extern tree ssize_binop PARAMS ((enum tree_code, tree, tree));
-extern tree size_int_wide PARAMS ((unsigned HOST_WIDE_INT,
- unsigned HOST_WIDE_INT, int));
-#define size_int(L) size_int_2 ((L), 0, 0)
-#define bitsize_int(L, H) size_int_2 ((L), (H), 1)
-#define size_int_2(L, H, T) \
- size_int_wide ((unsigned HOST_WIDE_INT) (L), \
- (unsigned HOST_WIDE_INT) (H), (T))
+extern tree size_int_wide PARAMS ((HOST_WIDE_INT, int));
+
+#define size_int(L) size_int_wide ((HOST_WIDE_INT) (L), 0)
+#define bitsize_int(L) size_int_wide ((HOST_WIDE_INT) (L), 1)
extern tree round_up PARAMS ((tree, int));
extern tree get_pending_sizes PARAMS ((void));