⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.h

📁 GUN开源阻止下的编译器GCC
💻 H
📖 第 1 页 / 共 5 页
字号:
   given type.  For example, given types C and D, such that D is   inherited by C, 3 binfo nodes will be allocated: one for describing   the binfo properties of C, similarly one for D, and one for   describing the binfo properties of D as a base type for C.   Thus, given a pointer to class C, one can get a pointer to the binfo   of D acting as a basetype for C by looking at C's binfo's basetypes.  *//* The actual data type node being inherited in this basetype.  */#define BINFO_TYPE(NODE) TREE_TYPE (NODE)/* The offset where this basetype appears in its containing type.   BINFO_OFFSET slot holds the offset (in bytes)   from the base of the complete object to the base of the part of the   object that is allocated on behalf of this `type'.   This is always 0 except when there is multiple inheritance.  */   #define BINFO_OFFSET(NODE) TREE_VEC_ELT ((NODE), 1)#define TYPE_BINFO_OFFSET(NODE) BINFO_OFFSET (TYPE_BINFO (NODE))#define BINFO_OFFSET_ZEROP(NODE) (BINFO_OFFSET (NODE) == integer_zero_node)/* The virtual function table belonging to this basetype.  Virtual   function tables provide a mechanism for run-time method dispatching.   The entries of a virtual function table are language-dependent.  */#define BINFO_VTABLE(NODE) TREE_VEC_ELT ((NODE), 2)#define TYPE_BINFO_VTABLE(NODE) BINFO_VTABLE (TYPE_BINFO (NODE))/* The virtual functions in the virtual function table.  This is   a TREE_LIST that is used as an initial approximation for building   a virtual function table for this basetype.  */#define BINFO_VIRTUALS(NODE) TREE_VEC_ELT ((NODE), 3)#define TYPE_BINFO_VIRTUALS(NODE) BINFO_VIRTUALS (TYPE_BINFO (NODE))/* A vector of additional binfos for the types inherited by this basetype.   If this basetype describes type D as inherited in C,   and if the basetypes of D are E anf F,   then this vector contains binfos for inheritance of E and F by C.   ??? This could probably be done by just allocating the   base types at the end of this TREE_VEC (instead of using   another TREE_VEC).  This would simplify the calculation   of how many basetypes a given type had.  */#define BINFO_BASETYPES(NODE) TREE_VEC_ELT ((NODE), 4)#define TYPE_BINFO_BASETYPES(NODE) TREE_VEC_ELT (TYPE_BINFO (NODE), 4)/* For a BINFO record describing an inheritance, this yields a pointer   to the artificial FIELD_DECL node which contains the "virtual base   class pointer" for the given inheritance.  */#define BINFO_VPTR_FIELD(NODE) TREE_VEC_ELT ((NODE), 5)/* Accessor macro to get to the Nth basetype of this basetype.  */#define BINFO_BASETYPE(NODE,N) TREE_VEC_ELT (BINFO_BASETYPES (NODE), (N))#define TYPE_BINFO_BASETYPE(NODE,N) BINFO_TYPE (TREE_VEC_ELT (BINFO_BASETYPES (TYPE_BINFO (NODE)), (N)))/* Slot used to build a chain that represents a use of inheritance.   For example, if X is derived from Y, and Y is derived from Z,   then this field can be used to link the binfo node for X to   the binfo node for X's Y to represent the use of inheritance   from X to Y.  Similarly, this slot of the binfo node for X's Y   can point to the Z from which Y is inherited (in X's inheritance   hierarchy).  In this fashion, one can represent and traverse specific   uses of inheritance using the binfo nodes themselves (instead of   consing new space pointing to binfo nodes).   It is up to the language-dependent front-ends to maintain   this information as necessary.  */#define BINFO_INHERITANCE_CHAIN(NODE) TREE_VEC_ELT ((NODE), 0)/* Define fields and accessors for nodes representing declared names.  *//* This is the name of the object as written by the user.   It is an IDENTIFIER_NODE.  */#define DECL_NAME(NODE) ((NODE)->decl.name)/* This is the name of the object as the assembler will see it   (but before any translations made by ASM_OUTPUT_LABELREF).   Often this is the same as DECL_NAME.   It is an IDENTIFIER_NODE.  */#define DECL_ASSEMBLER_NAME(NODE) ((NODE)->decl.assembler_name)/* Records the section name in a section attribute.  Used to pass   the name from decl_attributes to make_function_rtl and make_decl_rtl.  */#define DECL_SECTION_NAME(NODE) ((NODE)->decl.section_name)/*  For FIELD_DECLs, this is the    RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE node that the field is    a member of.  For VAR_DECL, PARM_DECL, FUNCTION_DECL, LABEL_DECL,    and CONST_DECL nodes, this points to the FUNCTION_DECL for the    containing function, or else yields NULL_TREE if the given decl has "file scope".  */#define DECL_CONTEXT(NODE) ((NODE)->decl.context)#define DECL_FIELD_CONTEXT(NODE) ((NODE)->decl.context)/* In a DECL this is the field where configuration dependent machine   attributes are store */#define DECL_MACHINE_ATTRIBUTES(NODE) ((NODE)->decl.machine_attributes)/* In a FIELD_DECL, this is the field position, counting in bits,   of the bit closest to the beginning of the structure.  */#define DECL_FIELD_BITPOS(NODE) ((NODE)->decl.arguments)/* In a FIELD_DECL, this indicates whether the field was a bit-field and   if so, the type that was originally specified for it.   TREE_TYPE may have been modified (in finish_struct).  */#define DECL_BIT_FIELD_TYPE(NODE) ((NODE)->decl.result)/* In FUNCTION_DECL, a chain of ..._DECL nodes.  *//* VAR_DECL and PARM_DECL reserve the arguments slot   for language-specific uses.  */#define DECL_ARGUMENTS(NODE) ((NODE)->decl.arguments)/* In FUNCTION_DECL, holds the decl for the return value.  */#define DECL_RESULT(NODE) ((NODE)->decl.result)/* In PARM_DECL, holds the type as written (perhaps a function or array).  */#define DECL_ARG_TYPE_AS_WRITTEN(NODE) ((NODE)->decl.result)/* For a FUNCTION_DECL, holds the tree of BINDINGs.   For a VAR_DECL, holds the initial value.   For a PARM_DECL, not used--default   values for parameters are encoded in the type of the function,   not in the PARM_DECL slot.  */#define DECL_INITIAL(NODE) ((NODE)->decl.initial)/* For a PARM_DECL, records the data type used to pass the argument,   which may be different from the type seen in the program.  */#define DECL_ARG_TYPE(NODE) ((NODE)->decl.initial)   /* In PARM_DECL.  *//* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which   if nonzero, indicates that the field occupies the type.  */#define DECL_QUALIFIER(NODE) ((NODE)->decl.initial)/* These two fields describe where in the source code the declaration was.  */#define DECL_SOURCE_FILE(NODE) ((NODE)->decl.filename)#define DECL_SOURCE_LINE(NODE) ((NODE)->decl.linenum)/* Holds the size of the datum, as a tree expression.   Need not be constant.  */#define DECL_SIZE(NODE) ((NODE)->decl.size)/* Holds the alignment required for the datum.  */#define DECL_ALIGN(NODE) ((NODE)->decl.frame_size.u)/* Holds the machine mode corresponding to the declaration of a variable or   field.  Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a   FIELD_DECL.  */#define DECL_MODE(NODE) ((NODE)->decl.mode)/* Holds the RTL expression for the value of a variable or function.  If   PROMOTED_MODE is defined, the mode of this expression may not be same   as DECL_MODE.  In that case, DECL_MODE contains the mode corresponding   to the variable's data type, while the mode   of DECL_RTL is the mode actually used to contain the data.  */#define DECL_RTL(NODE) ((NODE)->decl.rtl)/* For PARM_DECL, holds an RTL for the stack slot or register   where the data was actually passed.  */#define DECL_INCOMING_RTL(NODE) ((NODE)->decl.saved_insns.r)/* For FUNCTION_DECL, if it is inline, holds the saved insn chain.  */#define DECL_SAVED_INSNS(NODE) ((NODE)->decl.saved_insns.r)/* For FUNCTION_DECL, if it is inline,   holds the size of the stack frame, as an integer.  */#define DECL_FRAME_SIZE(NODE) ((NODE)->decl.frame_size.i)/* For FUNCTION_DECL, if it is built-in,   this identifies which built-in operation it is.  */#define DECL_FUNCTION_CODE(NODE) ((NODE)->decl.frame_size.f)#define DECL_SET_FUNCTION_CODE(NODE,VAL) ((NODE)->decl.frame_size.f = (VAL))/* For a FIELD_DECL, holds the size of the member as an integer.  */#define DECL_FIELD_SIZE(NODE) ((NODE)->decl.saved_insns.i)/* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways.   Before the struct containing the FUNCTION_DECL is laid out,   DECL_VINDEX may point to a FUNCTION_DECL in a base class which   is the FUNCTION_DECL which this FUNCTION_DECL will replace as a virtual   function.  When the class is laid out, this pointer is changed   to an INTEGER_CST node which is suitable for use as an index   into the virtual function table.  */#define DECL_VINDEX(NODE) ((NODE)->decl.vindex)/* For FIELD_DECLS, DECL_FCONTEXT is the *first* baseclass in   which this FIELD_DECL is defined.  This information is needed when   writing debugging information about vfield and vbase decls for C++.  */#define DECL_FCONTEXT(NODE) ((NODE)->decl.vindex)/* Every ..._DECL node gets a unique number.  */#define DECL_UID(NODE) ((NODE)->decl.uid)/* For any sort of a ..._DECL node, this points to the original (abstract)   decl node which this decl is an instance of, or else it is NULL indicating   that this decl is not an instance of some other decl.  */#define DECL_ABSTRACT_ORIGIN(NODE) ((NODE)->decl.abstract_origin)/* Nonzero for any sort of ..._DECL node means this decl node represents   an inline instance of some original (abstract) decl from an inline function;   suppress any warnings about shadowing some other variable.  */#define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != (tree) 0)/* Nonzero if a _DECL means that the name of this decl should be ignored   for symbolic debug purposes.  */#define DECL_IGNORED_P(NODE) ((NODE)->decl.ignored_flag)/* Nonzero for a given ..._DECL node means that this node represents an   "abstract instance" of the given declaration (e.g. in the original   declaration of an inline function).  When generating symbolic debugging   information, we mustn't try to generate any address information for nodes   marked as "abstract instances" because we don't actually generate   any code or allocate any data space for such instances.  */#define DECL_ABSTRACT(NODE) ((NODE)->decl.abstract_flag)/* Nonzero if a _DECL means that no warnings should be generated just   because this decl is unused.  */#define DECL_IN_SYSTEM_HEADER(NODE) ((NODE)->decl.in_system_header_flag)/* Nonzero for a given ..._DECL node means that this node should be   put in .common, if possible.  If a DECL_INITIAL is given, and it   is not error_mark_node, then the decl cannot be put in .common.  */#define DECL_COMMON(NODE) ((NODE)->decl.common_flag)/* Language-specific decl information.  */#define DECL_LANG_SPECIFIC(NODE) ((NODE)->decl.lang_specific)/* In a VAR_DECL or FUNCTION_DECL,   nonzero means external reference:   do not allocate storage, and refer to a definition elsewhere.  */#define DECL_EXTERNAL(NODE) ((NODE)->decl.external_flag)/* In a TYPE_DECL   nonzero means the detail info about this type is not dumped into stabs.   Instead it will generate cross reference ('x') of names.    This uses the same flag as DECL_EXTERNAL. */#define TYPE_DECL_SUPPRESS_DEBUG(NODE) ((NODE)->decl.external_flag)   /* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'.   In LABEL_DECL nodes, nonzero means that an error message about   jumping into such a binding contour has been printed for this label.  */#define DECL_REGISTER(NODE) ((NODE)->decl.regdecl_flag)/* In a FIELD_DECL, indicates this field should be bit-packed.  */#define DECL_PACKED(NODE) ((NODE)->decl.regdecl_flag)/* Nonzero in a ..._DECL means this variable is ref'd from a nested function.   For VAR_DECL nodes, PARM_DECL nodes, and FUNCTION_DECL nodes.   For LABEL_DECL nodes, nonzero if nonlocal gotos to the label are permitted.   Also set in some languages for variables, etc., outside the normal   lexical scope, such as class instance variables.  */#define DECL_NONLOCAL(NODE) ((NODE)->decl.nonlocal_flag)/* Nonzero in a FUNCTION_DECL means this function can be substituted   where it is called.  */#define DECL_INLINE(NODE) ((NODE)->decl.inline_flag)/* Nonzero in a FUNCTION_DECL means this is a built-in function   that is not specified by ansi C and that users are supposed to be allowed   to redefine for any purpose whatever.  */#define DECL_BUILT_IN_NONANSI(NODE) ((NODE)->common.unsigned_flag)/* Nonzero in a FIELD_DECL means it is a bit field, and must be accessed   specially.  */#define DECL_BIT_FIELD(NODE) ((NODE)->decl.bit_field_flag)/* In a LABEL_DECL, nonzero means label was defined inside a binding   contour that restored a stack level and which is now exited.  */#define DECL_TOO_LATE(NODE) ((NODE)->decl.bit_field_flag)/* In a FUNCTION_DECL, nonzero means a built in function.  */#define DECL_BUILT_IN(NODE) ((NODE)->decl.bit_field_flag)/* In a VAR_DECL that's static,   nonzero if the space is in the text section.  */#define DECL_IN_TEXT_SECTION(NODE) ((NODE)->decl.bit_field_flag)/* Used in VAR_DECLs to indicate that the variable is a vtable.   Used in FIELD_DECLs for vtable pointers.   Used in FUNCTION_DECLs to indicate that the function is virtual.  */#define DECL_VIRTUAL_P(NODE) ((NODE)->decl.virtual_flag)/* Used to indicate that the linkage status of this DECL is not yet known,   so it should not be output now.  */#define DECL_DEFER_OUTPUT(NODE) ((NODE)->decl.defer_output)/* Used in PARM_DECLs whose type are unions to indicate that the   argument should be passed in the same way that the first union   alternative would be passed.  */#define DECL_TRANSPARENT_UNION(NODE) ((NODE)->decl.transparent_union)/* Used in FUNCTION_DECLs to indicate that they should be run automatically   at the beginning or end of execution.  */#define DECL_STATIC_CONSTRUCTOR(NODE) ((NODE)->decl.static_ctor_flag)#define DECL_STATIC_DESTRUCTOR(NODE) ((NODE)->decl.static_dtor_flag)/* Used to indicate that this DECL represents a compiler-generated entity.  */#define DECL_ARTIFICIAL(NODE) ((NODE)->decl.artificial_flag)/* Used to indicate that this DECL has weak linkage.  */#define DECL_WEAK(NODE) ((NODE)->decl.weak_flag)/* Additional flags for language-specific uses.  */#define DECL_LANG_FLAG_0(NODE) ((NODE)->decl.lang_flag_0)#define DECL_LANG_FLAG_1(NODE) ((NODE)->decl.lang_flag_1)#define DECL_LANG_FLAG_2(NODE) ((NODE)->decl.lang_flag_2)#define DECL_LANG_FLAG_3(NODE) ((NODE)->decl.lang_flag_3)#define DECL_LANG_FLAG_4(NODE) ((NODE)->decl.lang_flag_4)#define DECL_LANG_FLAG_5(NODE) ((NODE)->decl.lang_flag_5)#define DECL_LANG_FLAG_6(NODE) ((NODE)->decl.lang_flag_6)#define DECL_LANG_FLAG_7(NODE) ((NODE)->decl.lang_flag_7)struct tree_decl{  char common[sizeof (struct tree_common)];  char *filename;  int linenum;  union tree_node *size;  unsigned int uid;#ifdef ONLY_INT_FIELDS  int mode : 8;#else  enum machine_mode mode : 8;#endif  unsigned external_flag : 1;  unsigned nonlocal_flag : 1;  unsigned regdecl_flag : 1;  unsigned inline_flag : 1;  unsigned bit_field_flag : 1;  unsigned virtual_flag : 1;  unsigned ignored_flag : 1;  unsigned abstract_flag : 1;  unsigned in_system_header_flag : 1;  unsigned common_flag : 1;  unsigned defer_output : 1;  unsigned transparent_union : 1;  unsigned static_ctor_flag : 1;  unsigned static_dtor_flag : 1;  unsigned artificial_flag : 1;  unsigned weak_flag : 1;  /* room for no more */  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 lang_flag_7 : 1;  union tree_node *name;  union tree_node *context;  union tree_node *arguments;  union tree_node *result;  union tree_node *initial;  union tree_node *abstract_origin;  union tree_node *assembler_name;  union tree_node *section_name;  union tree_node *machine_attributes;  struct rtx_def *rtl;	/* acts as link to register transfer language				   (rtl) info */  /* For a FUNCTION_DECL, if inline, this is the size of frame needed.     If built-in, this is the code for which built-in function.     For other kinds of decls, this is DECL_ALIGN.  */  union {    int i;    unsigned int u;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -