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:
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().