method.c (use_thunk): Disable access control while building the body of the thunk.

* method.c (use_thunk): Disable access control while building the
	body of the thunk.

From-SVN: r60889
This commit is contained in:
Mark Mitchell 2003-01-04 20:00:44 +00:00 committed by Mark Mitchell
parent b0588013c1
commit 1bb2cc34af
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2003-01-04 Mark Mitchell <mark@codesourcery.com>
* method.c (use_thunk): Disable access control while building the
body of the thunk.
2003-01-03 Nathanael Nerode <neroden@gcc.gnu.org> 2003-01-03 Nathanael Nerode <neroden@gcc.gnu.org>
* cvt.c, decl.c, decl2.c: This is the C++ front end, not the C * cvt.c, decl.c, decl2.c: This is the C++ front end, not the C

View File

@ -480,6 +480,7 @@ use_thunk (tree thunk_fndecl, bool emit_p)
doesn't work for varargs. */ doesn't work for varargs. */
tree a, t; tree a, t;
int saved_check_access;
if (varargs_function_p (function)) if (varargs_function_p (function))
error ("generic thunk code fails for method `%#D' which uses `...'", error ("generic thunk code fails for method `%#D' which uses `...'",
@ -501,8 +502,11 @@ use_thunk (tree thunk_fndecl, bool emit_p)
start_function (NULL_TREE, thunk_fndecl, NULL_TREE, SF_PRE_PARSED); start_function (NULL_TREE, thunk_fndecl, NULL_TREE, SF_PRE_PARSED);
/* We don't bother with a body block for thunks. */ /* We don't bother with a body block for thunks. */
t = a; /* There's no need to check accessibility inside the thunk body. */
saved_check_access = scope_chain->check_access;
scope_chain->check_access = 0;
t = a;
if (this_adjusting) if (this_adjusting)
t = thunk_adjust (t, /*this_adjusting=*/1, t = thunk_adjust (t, /*this_adjusting=*/1,
fixed_offset, virtual_offset); fixed_offset, virtual_offset);
@ -529,6 +533,9 @@ use_thunk (tree thunk_fndecl, bool emit_p)
/* But we don't want debugging information about it. */ /* But we don't want debugging information about it. */
DECL_IGNORED_P (thunk_fndecl) = 1; DECL_IGNORED_P (thunk_fndecl) = 1;
/* Re-enable access control. */
scope_chain->check_access = saved_check_access;
expand_body (finish_function (0)); expand_body (finish_function (0));
} }