diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-12-31 14:18:23 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-12-31 14:18:23 -0500 |
commit | a5f99f011f4cb709d111032b1978304c3e21c4e4 (patch) | |
tree | 0cbadae5571a656161f38d5039117b3bdabc8c10 /gcc/tree.h | |
parent | f8b90ffd5c09a2273bca8d3415e0bbf6a926d358 (diff) | |
download | gcc-a5f99f011f4cb709d111032b1978304c3e21c4e4.zip gcc-a5f99f011f4cb709d111032b1978304c3e21c4e4.tar.gz gcc-a5f99f011f4cb709d111032b1978304c3e21c4e4.tar.bz2 |
Add documentation on uses of common area flags.
(DECL_ERROR_ISSUED): New macro.
(DECL_NO_STATIC_CHAIN): New macro; currently unused.
From-SVN: r10908
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 115 |
1 files changed, 111 insertions, 4 deletions
@@ -166,9 +166,112 @@ struct tree_common unsigned lang_flag_4 : 1; unsigned lang_flag_5 : 1; unsigned lang_flag_6 : 1; - /* There is room for two more flags. */ + /* There is room for three more flags. */ }; +/* The following table lists the uses of each of the above flags and + for which types of nodes they are defined. Note that expressions + include decls. + + addressable_flag: + + TREE_ADDRESSABLE in + VAR_DECL, FUNCTION_DECL, CONSTRUCTOR, LABEL_DECL, ..._TYPE + IDENTIFIER_NODE + + static_flag: + + TREE_STATIC in + VAR_DECL, FUNCTION_DECL, CONSTRUCTOR + TREE_NO_UNUSED_WARNING in + CONVERT_EXPR, NOP_EXPR, COMPOUND_EXPR + TREE_VIA_VIRTUAL in + TREE_LIST or TREE_VEC + TREE_CONSTANT_OVERFLOW in + INTEGER_CST, REAL_CST, COMPLEX_CST + TREE_SYMBOL_REFERENCED in + IDENTIFIER_NODE + + public_flag: + + TREE_OVERFLOW in + INTEGER_CST, REAL_CST, COMPLEX_CST + TREE_PUBLIC in + VAR_DECL or FUNCTION_DECL + TREE_VIA_PUBLIC in + TREE_LIST or TREE_VEC + + private_flag: + + TREE_VIA_PRIVATE in + TREE_LIST or TREE_VEC + TREE_PRIVATE in + ??? unspecified nodes + + protected_flag: + + TREE_VIA_PROTECTED in + TREE_LIST + TREE_PROTECTED in + BLOCK + ??? unspecified nodes + + side_effects_flag: + + TREE_SIDE_EFFECTS in + all expressions + + volatile_flag: + + TREE_THIS_VOLATILE in + all expressions + TYPE_VOLATILE in + ..._TYPE + + readonly_flag: + + TREE_READONLY in + VAR_DECL, PARM_DECL, FIELD_DECL, ..._REF + ITERATOR_BOUND_P in + VAR_DECL if iterator (C) + TYPE_READONLY in + ..._TYPE + + constant_flag: + + TREE_CONSTANT in + all expressions + + permanent_flag: TREE_PERMANENT in all nodes + + unsigned_flag: + + TREE_UNSIGNED in + INTEGER_TYPE, ENUMERAL_TYPE, FIELD_DECL + CONSTRUCTOR_TARGET_CLEARED_P in + CONSTRUCTOR + DECL_BUILT_IN_NONANSI in + FUNCTION_DECL + TREE_PARMLIST in + TREE_PARMLIST (C++) + + asm_written_flag: + + TREE_ASM_WRITTEN in + VAR_DECL, FUNCTION_DECL, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE + BLOCK + + used_flag: + + TREE_USED in + expressions, IDENTIFIER_NODE + + raises_flag: + + TREE_RAISES in + expressions + + */ /* Define accessors for the fields that all tree nodes have (though some fields are not used for all kinds of nodes). */ @@ -905,12 +1008,16 @@ struct tree_type #define TYPE_DECL_SUPPRESS_DEBUG(NODE) ((NODE)->decl.external_flag) -/* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'. - In LABEL_DECL nodes, nonzero means that an error message about - jumping into such a binding contour has been printed for this label. */ +/* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'. */ #define DECL_REGISTER(NODE) ((NODE)->decl.regdecl_flag) +/* In LABEL_DECL nodes, nonzero means that an error message about + jumping into such a binding contour has been printed for this label. */ +#define DECL_ERROR_ISSUED(NODE) ((NODE)->decl.regdecl_flag) /* In a FIELD_DECL, indicates this field should be bit-packed. */ #define DECL_PACKED(NODE) ((NODE)->decl.regdecl_flag) +/* In a FUNCTION_DECL with a non-zero DECL_CONTEXT, indicates that a + static chain is not needed. */ +#define DECL_NO_STATIC_CHAIN(NODE) ((NODE)->decl.regdecl_flag) /* Nonzero in a ..._DECL means this variable is ref'd from a nested function. For VAR_DECL nodes, PARM_DECL nodes, and FUNCTION_DECL nodes. |