From 61131fa200ffcfeab327174b8dfcac4116906d6f Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Fri, 17 Jul 1992 04:15:55 +0000 Subject: [PATCH] (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 --- gcc/tree.h | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/gcc/tree.h b/gcc/tree.h index 01910ab33a2..d8dc82aeeb9 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. */ -- 2.30.2