/* Whether a System V.4 varargs area was created. */
int rs6000_sysv_varargs_p;
-/* Whether we need to save the TOC register. */
-int rs6000_save_toc_p;
-
/* ABI enumeration available for subtarget to use. */
enum rs6000_abi rs6000_current_abi;
p->machine = machine;
machine->sysv_varargs_p = rs6000_sysv_varargs_p;
- machine->save_toc_p = rs6000_save_toc_p;
machine->fpmem_size = rs6000_fpmem_size;
machine->fpmem_offset = rs6000_fpmem_offset;
}
struct machine_function *machine = p->machine;
rs6000_sysv_varargs_p = machine->sysv_varargs_p;
- rs6000_save_toc_p = machine->save_toc_p;
rs6000_fpmem_size = machine->fpmem_size;
rs6000_fpmem_offset = machine->fpmem_offset;
{
/* Reset varargs and save TOC indicator */
rs6000_sysv_varargs_p = 0;
- rs6000_save_toc_p = 0;
rs6000_fpmem_size = 0;
rs6000_fpmem_offset = 0;
pic_offset_table_rtx = (rtx)0;
/* Does this function call anything? */
info_ptr->calls_p = rs6000_makes_calls ();
- /* Do we need to allocate space to save the toc? */
- if (rs6000_save_toc_p)
+ /* Allocate space to save the toc. */
+ if (abi == ABI_NT)
{
info_ptr->toc_save_p = 1;
info_ptr->toc_size = reg_size;
reg_names[sp_reg]);
}
- if (info->toc_save_p)
- asm_fprintf (file, store_reg, reg_names[2], info->toc_save_offset + sp_offset,
- reg_names[sp_reg]);
-
/* NT needs us to probe the stack frame every 4k pages for large frames, so
do it here. */
if (DEFAULT_ABI == ABI_NT && info->total_size > 4096)
else if (DEFAULT_ABI == ABI_NT)
{
/* NT function pointers are really pointers to a two word area */
- rs6000_save_toc_p = 1;
emit_call_insn (gen_call_indirect_nt (force_reg (Pmode, operands[0]),
operands[1], operands[2],
toc_addr, toc_reg));
else if (DEFAULT_ABI == ABI_NT)
{
/* NT function pointers are really pointers to a two word area */
- rs6000_save_toc_p = 1;
emit_call_insn (gen_call_value_indirect_nt (operands[0],
force_reg (Pmode, operands[1]),
operands[2], operands[3],