The following macros and functions can be used on a FUNCTION_DECL:
     
DECL_MAIN_P
     ::code.
     DECL_NAME
     IDENTIFIER_NODE.  For an instantiation of a function template,
the DECL_NAME is the unqualified name of the template, not
something like f<int>.  The value of DECL_NAME is
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.
     DECL_ASSEMBLER_NAME
     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 itself.)
     DECL_EXTERNAL
     TREE_PUBLIC
     DECL_LOCAL_FUNCTION_P
     DECL_ANTICIPATED
     DECL_EXTERN_C_FUNCTION_P
     extern "C"' function.
     DECL_LINKONCE_P
     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.
     
DECL_FUNCTION_MEMBER_P
     DECL_STATIC_FUNCTION_P
     DECL_NONSTATIC_MEMBER_FUNCTION_P
     DECL_CONST_MEMFUNC_P
     const-member function.
     DECL_VOLATILE_MEMFUNC_P
     volatile-member function.
     DECL_CONSTRUCTOR_P
     DECL_NONCONVERTING_P
     DECL_COMPLETE_CONSTRUCTOR_P
     DECL_BASE_CONSTRUCTOR_P
     DECL_COPY_CONSTRUCTOR_P
     DECL_DESTRUCTOR_P
     DECL_COMPLETE_DESTRUCTOR_P
     DECL_OVERLOADED_OPERATOR_P
     DECL_CONV_FN_P
     DECL_GLOBAL_CTOR_P
     DECL_GLOBAL_DTOR_P
     DECL_THUNK_P
     These functions represent stub code that adjusts the this pointer
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
value.  (The THUNK_DELTA is an int, not an
INTEGER_CST.)
     
Then, if THUNK_VCALL_OFFSET (an INTEGER_CST) is nonzero
the adjusted 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
by DECL_INITIAL; this will always be an expression for the
address of a function.
     
DECL_NON_THUNK_FUNCTION_P
     GLOBAL_INIT_PRIORITY
     DECL_GLOBAL_CTOR_P or DECL_GLOBAL_DTOR_P holds,
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
before main is called.  When the program exits, all functions for
which DECL_GLOBAL_DTOR_P holds are run in the reverse order.
     DECL_ARTIFICIAL
     DECL_ARGUMENTS
     PARM_DECL for the first argument to the
function.  Subsequent PARM_DECL nodes can be obtained by
following the TREE_CHAIN links.
     DECL_RESULT
     RESULT_DECL for the function.
     TREE_TYPE
     FUNCTION_TYPE or METHOD_TYPE for
the function.
     TYPE_RAISES_EXCEPTIONS
     NULL, is comprised of nodes
whose TREE_VALUE represents a type.
     TYPE_NOTHROW_P
     ()'.
     DECL_ARRAY_DELETE_OPERATOR_P
     operator delete[].