Commit 8c29550d by Jakub Jelinek Committed by Jakub Jelinek

rs6000.h (machine_function): Add ra_need_lr.

	* config/rs6000/rs6000.h (machine_function): Add ra_need_lr.
	* config/rs6000/rs6000.c (rs6000_return_addr): Set it.
	(rs6000_emit_prologue): Save FPRs inline if set.

From-SVN: r69645
parent 92cbea22
2003-07-21 Jakub Jelinek <jakub@redhat.com>
* config/rs6000/rs6000.h (machine_function): Add ra_need_lr.
* config/rs6000/rs6000.c (rs6000_return_addr): Set it.
(rs6000_emit_prologue): Save FPRs inline if set.
2003-07-21 H.J. Lu <hongjiu.lu@intel.com> 2003-07-21 H.J. Lu <hongjiu.lu@intel.com>
* config/ia64/ia64.md (prefetch): Support predicate. * config/ia64/ia64.md (prefetch): Support predicate.
......
...@@ -10542,6 +10542,7 @@ rs6000_return_addr (count, frame) ...@@ -10542,6 +10542,7 @@ rs6000_return_addr (count, frame)
RETURN_ADDRESS_OFFSET))); RETURN_ADDRESS_OFFSET)));
} }
cfun->machine->ra_need_lr = 1;
return get_hard_reg_initial_val (Pmode, LINK_REGISTER_REGNUM); return get_hard_reg_initial_val (Pmode, LINK_REGISTER_REGNUM);
} }
...@@ -11252,7 +11253,8 @@ rs6000_emit_prologue () ...@@ -11252,7 +11253,8 @@ rs6000_emit_prologue ()
|| info->spe_64bit_regs_used == 0) || info->spe_64bit_regs_used == 0)
&& info->first_gp_reg_save < 31); && info->first_gp_reg_save < 31);
saving_FPRs_inline = (info->first_fp_reg_save == 64 saving_FPRs_inline = (info->first_fp_reg_save == 64
|| FP_SAVE_INLINE (info->first_fp_reg_save)); || FP_SAVE_INLINE (info->first_fp_reg_save)
|| cfun->machine->ra_need_lr);
/* For V.4, update stack before we do any saving and set back pointer. */ /* For V.4, update stack before we do any saving and set back pointer. */
if (info->push_p if (info->push_p
......
...@@ -1708,6 +1708,8 @@ typedef struct machine_function GTY(()) ...@@ -1708,6 +1708,8 @@ typedef struct machine_function GTY(())
const char *some_ld_name; const char *some_ld_name;
/* Whether the instruction chain has been scanned already. */ /* Whether the instruction chain has been scanned already. */
int insn_chain_scanned_p; int insn_chain_scanned_p;
/* Flags if __builtin_return_address (0) was used. */
int ra_need_lr;
} machine_function; } machine_function;
/* Define a data type for recording info about an argument list /* Define a data type for recording info about an argument list
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment