The following macros and functions can be used on a
IDENTIFIER_NODE. For an instantiation of a function template, the
DECL_NAMEis the unqualified name of the template, not something like
f<int>. The value of
DECL_NAMEis undefined when used on a constructor, destructor, overloaded operator, or type-conversion operator, or any function that is implicitly generated by the compiler. See below for macros that can be used to distinguish these cases.
IDENTIFIER_NODE. This name does not contain leading underscores on systems that prefix all identifiers with underscores. The mangled name is computed in the same way on all platforms; if special processing is required to deal with the object file format used on a particular platform, it is the responsibility of the back end to perform those modifications. (Of course, the back end should not modify
DECL_ASSEMBLER_NAME will cause additional memory to be
allocated (for the mangled name of the entity) so it should be used
only when emitting assembly code. It should not be used within the
optimizers to determine whether or not two declarations are the same,
even though some of the existing optimizers do use it in that way.
These uses will be removed over time.
extern "C"' function.
DECL_LINKONCE_Pholds; G++ instantiates needed templates in all translation units which require them, and then relies on the linker to remove duplicate instantiations.
FIXME: This macro is not yet implemented.
These functions represent stub code that adjusts the
and then jumps to another function. When the jumped-to function
returns, control is transferred directly to the caller, without
returning to the thunk. The first parameter to the thunk is always the
this pointer; the thunk should add
THUNK_DELTA to this
THUNK_DELTA is an
int, not an
INTEGER_CST) is nonzero
this pointer must be adjusted again. The complete
calculation is given by the following pseudo-code:
this += THUNK_DELTA if (THUNK_VCALL_OFFSET) this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
Finally, the thunk should jump to the location given
DECL_INITIAL; this will always be an expression for the
address of a function.
DECL_GLOBAL_DTOR_Pholds, then this gives the initialization priority for the function. The linker will arrange that all functions for which
DECL_GLOBAL_CTOR_Pholds are run in increasing order of priority before
mainis called. When the program exits, all functions for which
DECL_GLOBAL_DTOR_Pholds are run in the reverse order.
PARM_DECLfor the first argument to the function. Subsequent
PARM_DECLnodes can be obtained by following the
RESULT_DECLfor the function.
METHOD_TYPEfor the function.
NULL, is comprised of nodes whose
TREE_VALUErepresents a type.