diff options
author | Mark Mitchell <mark@codesourcery.com> | 2001-04-27 05:08:39 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2001-04-27 05:08:39 +0000 |
commit | 1b28d441b282bb7545664ee90d182ab610ed50e7 (patch) | |
tree | 91110338a243c47c82b485701d2f560d03609e16 | |
parent | f24fd724c2bb211021ac6d7fe3d9375f8218c0ec (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/method.c | 8 |
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)); } |