aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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));
}