diff options
author | Richard Henderson <rth@redhat.com> | 2001-09-21 09:58:22 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-09-21 09:58:22 -0700 |
commit | 6723181663a87a735bdfdf2e16a6bd41dbc30be1 (patch) | |
tree | 746cb9ad4b9e1b8562a39be3d23d3c85abfdac19 /gcc/doc/tm.texi | |
parent | 2e3b2d2c0791d979571fd33155b62e66ea7fe27c (diff) | |
download | gcc-6723181663a87a735bdfdf2e16a6bd41dbc30be1.zip gcc-6723181663a87a735bdfdf2e16a6bd41dbc30be1.tar.gz gcc-6723181663a87a735bdfdf2e16a6bd41dbc30be1.tar.bz2 |
tree.def (FDESC_EXPR): New.
gcc/
* tree.def (FDESC_EXPR): New.
* expr.c (expand_expr): Handle it.
* varasm.c (initializer_constant_valid_p): Likewise.
(output_constant): Likewise.
* defaults.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
* config/ia64/ia64.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
(ASM_OUTPUT_FDESC): New.
* doc/tm.texi: Document the new macros.
gcc/cp/
* class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
(build_vtbl_initializer): Likewise.
(build_vfn_ref): New.
* cp-tree.h: Declare it.
* call.c (build_over_call): Use it.
* decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
* typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
gcc/java/
* class.c (get_dispatch_table): Handle function descriptors.
(build_dtable_decl): Likewise.
* expr.c (build_invokevirtual): Likewise.
gcc/testsuite/
* g++.old-deja/g++.abi/ptrmem.C: Update for ia64 c++ abi.
* g++.old-deja/g++.abi/vtable2.C: Likewise.
From-SVN: r45733
Diffstat (limited to 'gcc/doc/tm.texi')
-rw-r--r-- | gcc/doc/tm.texi | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 721e161..cd4ec28 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -1597,6 +1597,18 @@ In general, you should not have to define this macro. On architectures in which function addresses are always even, according to @code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to @code{ptrmemfunc_vbit_in_pfn}. + +@findex TARGET_VTABLE_USES_DESCRIPTORS +@item TARGET_VTABLE_USES_DESCRIPTORS +Normally, the C++ compiler uses function pointers in vtables. This +macro allows the target to change to use ``function descriptors'' +instead. Function descriptors are found on targets for whom a +function pointer is actually a small data structure. Normally the +data structure consists of the actual code address plus a data +pointer to which the function's data is relative. + +If vtables are used, the value of this macro should be the number +of words that the function descriptor occupies. @end table @node Escape Sequences @@ -6012,6 +6024,12 @@ If the assembler has a @code{.ascii} pseudo-op as found in the Berkeley Unix assembler, do not define the macro @code{ASM_OUTPUT_ASCII}. +@findex ASM_OUTPUT_FDESC +@item ASM_OUTPUT_FDESC (@var{stream}, @var{decl}, @var{n}) +A C statement to output word @var{n} of a function descriptor for +@var{decl}. This must be defined if @code{TARGET_VTABLE_USES_DESCRIPTORS} +is defined, and is otherwise unused. + @findex CONSTANT_POOL_BEFORE_FUNCTION @item CONSTANT_POOL_BEFORE_FUNCTION You may define this macro as a C expression. You should define the |