aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-07-17 04:15:55 +0000
committerRichard Stallman <rms@gnu.org>1992-07-17 04:15:55 +0000
commit61131fa200ffcfeab327174b8dfcac4116906d6f (patch)
tree8c82feb6cda9f786b1122aa680ebc5983b16cc66
parentece0ca60b808b326b3163eed25d784801a38e086 (diff)
downloadgcc-61131fa200ffcfeab327174b8dfcac4116906d6f.zip
gcc-61131fa200ffcfeab327174b8dfcac4116906d6f.tar.gz
gcc-61131fa200ffcfeab327174b8dfcac4116906d6f.tar.bz2
(struct tree_block): New struct type definition added.
(BLOCK_VARS, BLOCK_TYPE_TAGS, BLOCK_SUBBLOCKS, BLOCK_HANDLER_BLOCK): Changed to reference fields of the new `struct tree_block' type. (BLOCK_ABSTRACT_ORIGIN, BLOCK_ABSTRACT): Definitions added. (union tree_node): Added `struct tree_block' as a new variant. From-SVN: r1602
-rw-r--r--gcc/tree.h41
1 files changed, 29 insertions, 12 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 01910ab..d8dc82a 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -464,28 +464,44 @@ struct tree_vec
/* In a CONSTRUCTOR node. */
#define CONSTRUCTOR_ELTS(NODE) TREE_OPERAND (NODE, 1)
+/* In ordinary expression nodes. */
+#define TREE_OPERAND(NODE, I) ((NODE)->exp.operands[I])
+#define TREE_COMPLEXITY(NODE) ((NODE)->exp.complexity)
+
+struct tree_exp
+{
+ char common[sizeof (struct tree_common)];
+ int complexity;
+ union tree_node *operands[1];
+};
+
/* In a BLOCK node. */
-#define BLOCK_VARS(NODE) ((NODE)->exp.operands[0])
-#define BLOCK_TYPE_TAGS(NODE) ((NODE)->exp.operands[1])
-#define BLOCK_SUBBLOCKS(NODE) ((NODE)->exp.operands[2])
-#define BLOCK_SUPERCONTEXT(NODE) ((NODE)->exp.operands[3])
+#define BLOCK_VARS(NODE) ((NODE)->block.vars)
+#define BLOCK_TYPE_TAGS(NODE) ((NODE)->block.type_tags)
+#define BLOCK_SUBBLOCKS(NODE) ((NODE)->block.subblocks)
+#define BLOCK_SUPERCONTEXT(NODE) ((NODE)->block.supercontext)
/* Note: when changing this, make sure to find the places
that use chainon or nreverse. */
#define BLOCK_CHAIN(NODE) TREE_CHAIN (NODE)
+#define BLOCK_ABSTRACT_ORIGIN(NODE) ((NODE)->block.abstract_origin)
+#define BLOCK_ABSTRACT(NODE) ((NODE)->block.abstract_flag)
/* Nonzero means that this block is prepared to handle exceptions
listed in the BLOCK_VARS slot. */
-#define BLOCK_HANDLER_BLOCK(NODE) TREE_PROTECTED(NODE)
+#define BLOCK_HANDLER_BLOCK(NODE) ((NODE)->block.handler_block_flag)
-/* In ordinary expression nodes. */
-#define TREE_OPERAND(NODE, I) ((NODE)->exp.operands[I])
-#define TREE_COMPLEXITY(NODE) ((NODE)->exp.complexity)
-
-struct tree_exp
+struct tree_block
{
char common[sizeof (struct tree_common)];
- int complexity;
- union tree_node *operands[1];
+
+ unsigned handler_block_flag : 1;
+ unsigned abstract_flag : 1;
+
+ union tree_node *vars;
+ union tree_node *type_tags;
+ union tree_node *subblocks;
+ union tree_node *supercontext;
+ union tree_node *abstract_origin;
};
/* Define fields and accessors for nodes representing data types. */
@@ -898,6 +914,7 @@ union tree_node
struct tree_list list;
struct tree_vec vec;
struct tree_exp exp;
+ struct tree_block block;
};
/* Format for global names of constructor and destructor functions. */