aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2001-04-27 05:08:39 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2001-04-27 05:08:39 +0000
commit1b28d441b282bb7545664ee90d182ab610ed50e7 (patch)
tree91110338a243c47c82b485701d2f560d03609e16
parentf24fd724c2bb211021ac6d7fe3d9375f8218c0ec (diff)
downloadgcc-1b28d441b282bb7545664ee90d182ab610ed50e7.zip
gcc-1b28d441b282bb7545664ee90d182ab610ed50e7.tar.gz
gcc-1b28d441b282bb7545664ee90d182ab610ed50e7.tar.bz2
method.c (use_thunk): Make sure that thunks really are emitted when requested.
* method.c (use_thunk): Make sure that thunks really are emitted when requested. From-SVN: r41621
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/method.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d6c2f48..c6e06ac 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2001-04-26 Mark Mitchell <mark@codesourcery.com>
+
+ * method.c (use_thunk): Make sure that thunks really are emitted
+ when requested.
+
2001-04-26 Nathan Sidwell <nathan@codesourcery.com>
* mangle.c (write_chars): New macro.
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index e3c88a46..db45fd4 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -377,7 +377,8 @@ make_thunk (function, delta, vcall_index, generate_with_vtable_p)
return thunk;
}
-/* Emit the definition of a C++ multiple inheritance vtable thunk. */
+/* Emit the definition of a C++ multiple inheritance vtable thunk. If
+ EMIT_P is non-zero, the thunk is emitted immediately. */
void
use_thunk (thunk_fndecl, emit_p)
@@ -519,6 +520,11 @@ use_thunk (thunk_fndecl, emit_p)
DECL_INITIAL (thunk_fndecl) = make_node (BLOCK);
BLOCK_VARS (DECL_INITIAL (thunk_fndecl))
= DECL_ARGUMENTS (thunk_fndecl);
+
+ /* Since we want to emit the thunk, we explicitly mark its name as
+ referenced. */
+ TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (thunk_fndecl)) = 1;
+
expand_body (finish_function (0));
}