gty.texi (tag, desc): Say more about role of desc values in selecting between tags.

* doc/gty.texi (tag, desc): Say more about role of desc values in
	selecting between tags.

From-SVN: r73233
This commit is contained in:
Richard Kenner 2003-11-03 23:47:11 +00:00 committed by Richard Kenner
parent 930177d9f0
commit aef6a62423
2 changed files with 23 additions and 11 deletions

View File

@ -1,3 +1,8 @@
2003-11-03 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* doc/gty.texi (tag, desc): Say more about role of desc values in
selecting between tags.
2003-11-03 Alexander Kabaev <ak03@gte.com>
* real.c (encode_ieee_single): Ensure proper promotion.

View File

@ -132,8 +132,19 @@ field really isn't ever used.
@itemx default
The type machinery needs to be told which field of a @code{union} is
currently active. This is done by giving each field a constant @code{tag}
value, and then specifying a discriminator using @code{desc}. For example,
currently active. This is done by giving each field a constant
@code{tag} value, and then specifying a discriminator using @code{desc}.
The value of the expression given by @code{desc} is compared against
each @code{tag} value, each of which should be different. If no
@code{tag} is matched, the field marked with @code{default} is used if
there is one, otherwise no field in the union will be marked.
In the @code{desc} option, the ``current structure'' is the union that
it discriminates. Use @code{%1} to mean the structure containing it.
(There are no escapes available to the @code{tag} option, since it's
supposed to be a constant.)
For example,
@smallexample
struct tree_binding GTY(())
@{
@ -141,19 +152,15 @@ struct tree_binding GTY(())
union tree_binding_u @{
tree GTY ((tag ("0"))) scope;
struct cp_binding_level * GTY ((tag ("1"))) level;
@} GTY ((desc ("BINDING_HAS_LEVEL_P ((tree)&%0)"))) scope;
@} GTY ((desc ("BINDING_HAS_LEVEL_P ((tree)&%0)"))) xscope;
tree value;
@};
@end smallexample
In the @code{desc} option, the ``current structure'' is the union that
it discriminates. Use @code{%1} to mean the structure containing it.
(There are no escapes available to the @code{tag} option, since it's
supposed to be a constant.)
Each @code{tag} should be different. If no @code{tag} is matched,
the field marked with @code{default} is used if there is one, otherwise
no field in the union will be marked.
In this example, the value of BINDING_HAS_LEVEL_P when applied to a
@code{struct tree_binding *} is presumed to be 0 or 1. If 1, the type
mechanism will treat the field @code{level} as being present and if 0,
will treat the field @code{scope} as being present.
@findex param_is
@findex use_param