Commit 61131fa2 by Richard Stallman

(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
parent ece0ca60
......@@ -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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment