GCC Middle and Back End API Reference
|
#include <tree-core.h>
Data Fields | ||
enum tree_code | code: 16 | |
unsigned | side_effects_flag: 1 | |
unsigned | constant_flag: 1 | |
unsigned | addressable_flag: 1 | |
unsigned | volatile_flag: 1 | |
unsigned | readonly_flag: 1 | |
unsigned | asm_written_flag: 1 | |
unsigned | nowarning_flag: 1 | |
unsigned | visited: 1 | |
unsigned | used_flag: 1 | |
unsigned | nothrow_flag: 1 | |
unsigned | static_flag: 1 | |
unsigned | public_flag: 1 | |
unsigned | private_flag: 1 | |
unsigned | protected_flag: 1 | |
unsigned | deprecated_flag: 1 | |
unsigned | default_def_flag: 1 | |
union { | ||
struct { | ||
unsigned lang_flag_0: 1 | ||
unsigned lang_flag_1: 1 | ||
unsigned lang_flag_2: 1 | ||
unsigned lang_flag_3: 1 | ||
unsigned lang_flag_4: 1 | ||
unsigned lang_flag_5: 1 | ||
unsigned lang_flag_6: 1 | ||
unsigned saturating_flag: 1 | ||
unsigned unsigned_flag: 1 | ||
unsigned packed_flag: 1 | ||
unsigned user_align: 1 | ||
unsigned nameless_flag: 1 | ||
unsigned atomic_flag: 1 | ||
unsigned unavailable_flag: 1 | ||
unsigned spare0: 2 | ||
unsigned spare1: 8 | ||
unsigned address_space: 8 | ||
} bits | ||
struct { | ||
unsigned short unextended | ||
unsigned short extended | ||
} int_length | ||
int length | ||
struct { | ||
unsigned int log2_npatterns: 8 | ||
unsigned int nelts_per_pattern: 8 | ||
unsigned int unused: 16 | ||
} vector_cst | ||
unsigned int version | ||
unsigned int chrec_var | ||
enum internal_fn ifn | ||
enum omp_memory_order omp_atomic_memory_order | ||
struct { | ||
unsigned short clique | ||
unsigned short base | ||
} dependence_info | ||
} | u | |
A tree node can represent a data type, a variable, an expression or a statement. Each node has a TREE_CODE which says what kind of thing it represents. Some common codes are: INTEGER_TYPE -- represents a type of integers. ARRAY_TYPE -- represents a type of pointer. VAR_DECL -- represents a declared variable. INTEGER_CST -- represents a constant integer value. PLUS_EXPR -- represents a sum (an expression). As for the contents of a tree node: there are some fields that all nodes share. Each TREE_CODE has various special-purpose fields as well. The fields of a node are never accessed directly, always through accessor macros.
Every kind of tree node starts with this structure, so all nodes have these fields. See the accessor macros, defined below, for documentation of the fields, and the table below which connects the fields and the accessor macros.
unsigned tree_base::address_space |
unsigned tree_base::addressable_flag |
unsigned tree_base::asm_written_flag |
unsigned tree_base::atomic_flag |
unsigned short tree_base::base |
struct { ... } tree_base::bits |
unsigned int tree_base::chrec_var |
unsigned short tree_base::clique |
enum tree_code tree_base::code |
unsigned tree_base::constant_flag |
unsigned tree_base::default_def_flag |
struct { ... } tree_base::dependence_info |
unsigned tree_base::deprecated_flag |
unsigned short tree_base::extended |
enum internal_fn tree_base::ifn |
struct { ... } tree_base::int_length |
unsigned tree_base::lang_flag_0 |
unsigned tree_base::lang_flag_1 |
unsigned tree_base::lang_flag_2 |
unsigned tree_base::lang_flag_3 |
unsigned tree_base::lang_flag_4 |
unsigned tree_base::lang_flag_5 |
unsigned tree_base::lang_flag_6 |
int tree_base::length |
unsigned int tree_base::log2_npatterns |
unsigned tree_base::nameless_flag |
unsigned int tree_base::nelts_per_pattern |
unsigned tree_base::nothrow_flag |
unsigned tree_base::nowarning_flag |
enum omp_memory_order tree_base::omp_atomic_memory_order |
unsigned tree_base::packed_flag |
unsigned tree_base::private_flag |
unsigned tree_base::protected_flag |
unsigned tree_base::public_flag |
unsigned tree_base::readonly_flag |
unsigned tree_base::saturating_flag |
unsigned tree_base::side_effects_flag |
unsigned tree_base::spare0 |
unsigned tree_base::spare1 |
unsigned tree_base::static_flag |
union { ... } tree_base::u |
unsigned tree_base::unavailable_flag |
unsigned short tree_base::unextended |
unsigned tree_base::unsigned_flag |
unsigned int tree_base::unused |
unsigned tree_base::used_flag |
unsigned tree_base::user_align |
struct { ... } tree_base::vector_cst |
unsigned int tree_base::version |
unsigned tree_base::visited |
unsigned tree_base::volatile_flag |