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:
parent
b0588013c1
commit
1bb2cc34af
@ -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
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user