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
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.