The following macros and functions can be used on a
IDENTIFIER_NODE. For an instantiation of a function template,
DECL_NAME is the unqualified name of the template, not
f<int>. The value of
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_P holds; 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.
then this gives the initialization priority for the function. The
linker will arrange that all functions for which
DECL_GLOBAL_CTOR_P holds are run in increasing order of priority
main is called. When the program exits, all functions for
DECL_GLOBAL_DTOR_P holds are run in the reverse order.
PARM_DECL for the first argument to the
PARM_DECL nodes can be obtained by
RESULT_DECL for the function.
NULL, is comprised of nodes
TREE_VALUE represents a type.
the function is to be compiled with the target options specified on
the command line.
NULL_TREE if the function is to be compiled with the
optimization options specified on the command line.