calls.c (prepare_call_address): New parameter SIBCALLP.
* calls.c (prepare_call_address): New parameter SIBCALLP. If true, don't force the function address into a register. (expand_call, emit_library_call_value_1): Update callers. * builtins.c (expand_builtin_apply): Likewise. * expr.h (prepare_call_address): Update decl. From-SVN: r44095
This commit is contained in:
parent
2bd2bdd9d2
commit
3affaf2934
|
@ -1,11 +1,19 @@
|
|||
2001-07-17 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* calls.c (prepare_call_address): New parameter SIBCALLP. If true,
|
||||
don't force the function address into a register.
|
||||
(expand_call, emit_library_call_value_1): Update callers.
|
||||
* builtins.c (expand_builtin_apply): Likewise.
|
||||
* expr.h (prepare_call_address): Update decl.
|
||||
|
||||
2001-07-17 Chandrakala Chavva <cchavva@redhat.com>
|
||||
|
||||
* config.gcc: For *-*-chorusos triplet, get chorus.h file from
|
||||
config directory.
|
||||
* config/i386/chorus.h: Move up.
|
||||
* config/sparc/chorus.h: Likewise.
|
||||
* config/rs6000/chorus.h: Likewise.
|
||||
* config/chorus.h: Moved here.
|
||||
* config.gcc: For *-*-chorusos triplet, get chorus.h file from
|
||||
config directory.
|
||||
* config/i386/chorus.h: Move up.
|
||||
* config/sparc/chorus.h: Likewise.
|
||||
* config/rs6000/chorus.h: Likewise.
|
||||
* config/chorus.h: Moved here.
|
||||
|
||||
2001-07-17 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
|
|
|
@ -1138,7 +1138,7 @@ expand_builtin_apply (function, arguments, argsize)
|
|||
}
|
||||
|
||||
/* All arguments and registers used for the call are set up by now! */
|
||||
function = prepare_call_address (function, NULL_TREE, &call_fusage, 0);
|
||||
function = prepare_call_address (function, NULL_TREE, &call_fusage, 0, 0);
|
||||
|
||||
/* Ensure address is valid. SYMBOL_REF is already valid, so no need,
|
||||
and we don't want to load it into a register as an optimization,
|
||||
|
|
|
@ -355,11 +355,12 @@ calls_function_1 (exp, which)
|
|||
CALL_INSN_FUNCTION_USAGE information. */
|
||||
|
||||
rtx
|
||||
prepare_call_address (funexp, fndecl, call_fusage, reg_parm_seen)
|
||||
prepare_call_address (funexp, fndecl, call_fusage, reg_parm_seen, sibcallp)
|
||||
rtx funexp;
|
||||
tree fndecl;
|
||||
rtx *call_fusage;
|
||||
int reg_parm_seen;
|
||||
int sibcallp;
|
||||
{
|
||||
rtx static_chain_value = 0;
|
||||
|
||||
|
@ -377,7 +378,7 @@ prepare_call_address (funexp, fndecl, call_fusage, reg_parm_seen)
|
|||
funexp = ((SMALL_REGISTER_CLASSES && reg_parm_seen)
|
||||
? force_not_mem (memory_address (FUNCTION_MODE, funexp))
|
||||
: memory_address (FUNCTION_MODE, funexp));
|
||||
else
|
||||
else if (! sibcallp)
|
||||
{
|
||||
#ifndef NO_FUNCTION_CSE
|
||||
if (optimize && ! flag_no_function_cse)
|
||||
|
@ -3038,7 +3039,7 @@ expand_call (exp, target, ignore)
|
|||
}
|
||||
|
||||
funexp = prepare_call_address (funexp, fndecl, &call_fusage,
|
||||
reg_parm_seen);
|
||||
reg_parm_seen, pass == 0);
|
||||
|
||||
load_register_parameters (args, num_actuals, &call_fusage, flags);
|
||||
|
||||
|
@ -4005,7 +4006,7 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
|
|||
else
|
||||
argnum = 0;
|
||||
|
||||
fun = prepare_call_address (fun, NULL_TREE, &call_fusage, 0);
|
||||
fun = prepare_call_address (fun, NULL_TREE, &call_fusage, 0, 0);
|
||||
|
||||
/* Now load any reg parms into their regs. */
|
||||
|
||||
|
|
|
@ -1112,7 +1112,7 @@ extern rtx trampoline_address PARAMS ((tree));
|
|||
in its original home. This becomes invalid if any more code is emitted. */
|
||||
extern rtx hard_function_value PARAMS ((tree, tree, int));
|
||||
|
||||
extern rtx prepare_call_address PARAMS ((rtx, tree, rtx *, int));
|
||||
extern rtx prepare_call_address PARAMS ((rtx, tree, rtx *, int, int));
|
||||
|
||||
extern rtx expand_call PARAMS ((tree, rtx, int));
|
||||
|
||||
|
|
Loading…
Reference in New Issue