Commit aef6a624 by Richard Kenner Committed by Richard Kenner

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
parent 930177d9
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> 2003-11-03 Alexander Kabaev <ak03@gte.com>
* real.c (encode_ieee_single): Ensure proper promotion. * real.c (encode_ieee_single): Ensure proper promotion.
......
...@@ -132,8 +132,19 @@ field really isn't ever used. ...@@ -132,8 +132,19 @@ field really isn't ever used.
@itemx default @itemx default
The type machinery needs to be told which field of a @code{union} is 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} currently active. This is done by giving each field a constant
value, and then specifying a discriminator using @code{desc}. For example, @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 @smallexample
struct tree_binding GTY(()) struct tree_binding GTY(())
@{ @{
...@@ -141,19 +152,15 @@ struct tree_binding GTY(()) ...@@ -141,19 +152,15 @@ struct tree_binding GTY(())
union tree_binding_u @{ union tree_binding_u @{
tree GTY ((tag ("0"))) scope; tree GTY ((tag ("0"))) scope;
struct cp_binding_level * GTY ((tag ("1"))) level; 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; tree value;
@}; @};
@end smallexample @end smallexample
In the @code{desc} option, the ``current structure'' is the union that In this example, the value of BINDING_HAS_LEVEL_P when applied to a
it discriminates. Use @code{%1} to mean the structure containing it. @code{struct tree_binding *} is presumed to be 0 or 1. If 1, the type
(There are no escapes available to the @code{tag} option, since it's mechanism will treat the field @code{level} as being present and if 0,
supposed to be a constant.) will treat the field @code{scope} as being present.
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.
@findex param_is @findex param_is
@findex use_param @findex use_param
......
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