GCC Middle and Back End API Reference
tree_base Struct Reference

#include <tree-core.h>

Data Fields

ENUM_BITFIELD(tree_code) code
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   spare0: 4
      unsigned   spare1: 8
      unsigned   address_space: 8
   }   bits
   int   length
   unsigned int   version
u

Detailed Description

   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.  

Field Documentation

unsigned tree_base::address_space
         This field is only used with TREE_TYPE nodes; the only reason it is
         present in tree_base instead of tree_type is to save space.  The size
         of the field must be large enough to hold addr_space_t values.  
unsigned tree_base::addressable_flag
unsigned tree_base::asm_written_flag
struct { ... } tree_base::bits
       The bits in the following structure should only be used with
       accessor macros that constrain inputs with tree checking.  
unsigned tree_base::constant_flag
unsigned tree_base::default_def_flag
unsigned tree_base::deprecated_flag
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
       The following fields are present in tree_base to save space.  The
       nodes using them do not require any of the flags above and so can
       make better use of the 4-byte sized word.  
       VEC length.  This field is only used with TREE_VEC.  
unsigned tree_base::nameless_flag
unsigned tree_base::nothrow_flag
unsigned tree_base::nowarning_flag
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
ENUM_BITFIELD (tree_code) code 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::unsigned_flag
unsigned tree_base::used_flag
unsigned tree_base::user_align
unsigned int tree_base::version
       SSA version number.  This field is only used with SSA_NAME.  
unsigned tree_base::visited
unsigned tree_base::volatile_flag

The documentation for this struct was generated from the following file: