|
GCC Middle and Back End API Reference
|
#include <gengtype.h>

Data Fields | |
| enum typekind | kind |
| type_p | next |
| int | state_number |
| type_p | pointer_to |
| enum gc_used_enum | gc_used |
| union { | |
| type_p p | |
| struct { | |
| const char * tag | |
| struct fileloc line | |
| pair_p fields | |
| options_p opt | |
| lang_bitmap bitmap | |
| type_p lang_struct | |
| type_p base_class | |
| type_p first_subclass | |
| type_p next_sibling_class | |
| } s | |
| bool scalar_is_char | |
| struct { | |
| type_p p | |
| const char * len | |
| } a | |
| struct { | |
| type_p stru | |
| type_p param [NUM_PARAM] | |
| struct fileloc line | |
| } param_struct | |
| } | u |
Our type structure describes all types handled by gengtype.
| struct { ... } type::a |
when TYPE_ARRAY:
| type_p type::base_class |
| lang_bitmap type::bitmap |
| pair_p type::fields |
Referenced by do_typedef().
| type_p type::first_subclass |
The following two fields are not serialized in state files, and
are instead reconstructed on load. The head of a singly-linked list of immediate descendents in
the inheritance hierarchy.
| enum gc_used_enum type::gc_used |
Type usage information, computed by set_gc_used_type and
set_gc_used functions.
| enum typekind type::kind |
Discriminating kind, cannot be TYPE_NONE.
Referenced by do_typedef(), and read_state_string_type().
| type_p type::lang_struct |
For TYPE_LANG_STRUCT, the lang_struct field gives the first
element of a linked list of homonymous struct or union types.
Within this list, each homonymous type has as its lang_struct
field the original TYPE_LANG_STRUCT type. This is a dirty
trick, see the new_structure function for details.
| const char* type::len |
| struct fileloc type::line |
| type_p type::next |
For top-level structs or unions, the 'next' field links the
global list 'structures' or 'param_structs'; for lang_structs,
their homonymous structs are linked using this 'next' field. The
homonymous list starts at the s.lang_struct field of the
lang_struct. See the new_structure function for details. This is
tricky!
| type_p type::next_sibling_class |
The next in that list.
| options_p type::opt |
| type_p type::p |
TYPE__NONE is impossible.
when TYPE_POINTER:
| type_p type::param[NUM_PARAM] |
| struct { ... } type::param_struct |
When TYPE_PARAM_STRUCT for (param_is, use_param, param1_is,
param2_is, ... use_param1, use_param_2, ... use_params) GTY
options.
Referenced by type_lineloc().
| type_p type::pointer_to |
Each GTY-ed type which is pointed to by some GTY-ed type knows
the GTY pointer type pointing to it. See create_pointer
function.
| struct { ... } type::s |
when TYPE_STRUCT or TYPE_UNION or TYPE_LANG_STRUCT, we have an
aggregate type containing fields:
Referenced by do_typedef(), record_type(), type_lineloc(), state_writer::write_state_scalar_type(), state_writer::write_state_struct_union_type(), and xasprintf().
| bool type::scalar_is_char |
when TYPE_SCALAR:
| int type::state_number |
State number used when writing & reading the persistent state. A
type with a positive number has already been written. For ease
of debugging, newly allocated types have a unique negative
number.
Referenced by read_state_languages(), record_type(), state_writer::write_state_array_type(), and state_writer::write_state_scalar_type().
| type_p type::stru |
| const char* type::tag |
| union { ... } type::u |
The following union is discriminated by the 'kind' field above.
Referenced by do_typedef(), record_type(), type_lineloc(), state_writer::write_state_scalar_type(), state_writer::write_state_struct_union_type(), and xasprintf().