Donn Terry (donn@interix.com)
Donn Terry (donn@interix.com) * calls.c (rtx_for_function_call): Extend function pointer being passed to chkr_check_exec_libfunc, if needed. From-SVN: r26838
This commit is contained in:
parent
fdc829c7fa
commit
91ab104696
@ -1,3 +1,8 @@
|
||||
Sat May 8 01:57:58 1999 Donn Terry (donn@interix.com)
|
||||
|
||||
* calls.c (rtx_for_function_call): Extend function pointer being
|
||||
passed to chkr_check_exec_libfunc, if needed.
|
||||
|
||||
Sat May 8 01:51:50 1999 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* ginclude/stdarg.h (__va_rounded_size): Use long type for
|
||||
|
18
gcc/calls.c
18
gcc/calls.c
@ -1407,15 +1407,25 @@ rtx_for_function_call (fndecl, exp)
|
||||
else
|
||||
/* Generate an rtx (probably a pseudo-register) for the address. */
|
||||
{
|
||||
rtx funaddr;
|
||||
push_temp_slots ();
|
||||
funexp = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, VOIDmode, 0);
|
||||
funaddr = funexp =
|
||||
expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, VOIDmode, 0);
|
||||
pop_temp_slots (); /* FUNEXP can't be BLKmode */
|
||||
|
||||
/* Check the function is executable. */
|
||||
if (current_function_check_memory_usage)
|
||||
emit_library_call (chkr_check_exec_libfunc, 1,
|
||||
VOIDmode, 1,
|
||||
funexp, Pmode);
|
||||
{
|
||||
#ifdef POINTERS_EXTEND_UNSIGNED
|
||||
/* It might be OK to convert funexp in place, but there's
|
||||
a lot going on between here and when it happens naturally
|
||||
that this seems safer. */
|
||||
funaddr = convert_memory_address (Pmode, funexp);
|
||||
#endif
|
||||
emit_library_call (chkr_check_exec_libfunc, 1,
|
||||
VOIDmode, 1,
|
||||
funaddr, Pmode);
|
||||
}
|
||||
emit_queue ();
|
||||
}
|
||||
return funexp;
|
||||
|
Loading…
Reference in New Issue
Block a user