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:
Donn Terry 1999-05-08 01:58:39 +00:00 committed by Richard Henderson
parent fdc829c7fa
commit 91ab104696
2 changed files with 19 additions and 4 deletions

View File

@ -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

View File

@ -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)
{
#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,
funexp, Pmode);
funaddr, Pmode);
}
emit_queue ();
}
return funexp;