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>
|
Sat May 8 01:51:50 1999 David Edelsohn <edelsohn@gnu.org>
|
||||||
|
|
||||||
* ginclude/stdarg.h (__va_rounded_size): Use long type for
|
* 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
|
else
|
||||||
/* Generate an rtx (probably a pseudo-register) for the address. */
|
/* Generate an rtx (probably a pseudo-register) for the address. */
|
||||||
{
|
{
|
||||||
|
rtx funaddr;
|
||||||
push_temp_slots ();
|
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 */
|
pop_temp_slots (); /* FUNEXP can't be BLKmode */
|
||||||
|
|
||||||
/* Check the function is executable. */
|
/* Check the function is executable. */
|
||||||
if (current_function_check_memory_usage)
|
if (current_function_check_memory_usage)
|
||||||
emit_library_call (chkr_check_exec_libfunc, 1,
|
{
|
||||||
VOIDmode, 1,
|
#ifdef POINTERS_EXTEND_UNSIGNED
|
||||||
funexp, Pmode);
|
/* 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 ();
|
emit_queue ();
|
||||||
}
|
}
|
||||||
return funexp;
|
return funexp;
|
||||||
|
Loading…
Reference in New Issue
Block a user