From: Jakub Jelinek Date: Mon, 21 Jul 2003 20:18:52 +0000 (+0200) Subject: rs6000.h (machine_function): Add ra_need_lr. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8c29550d3c6fbc405e1039246ae4425c7cbb8d3b;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b2247aa34b..cd57ee3ab5f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-07-21 Jakub Jelinek + + * 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 * config/ia64/ia64.md (prefetch): Support predicate. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 8f268974aa5..580d951e05b 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -10542,6 +10542,7 @@ rs6000_return_addr (count, frame) RETURN_ADDRESS_OFFSET))); } + cfun->machine->ra_need_lr = 1; return get_hard_reg_initial_val (Pmode, LINK_REGISTER_REGNUM); } @@ -11252,7 +11253,8 @@ rs6000_emit_prologue () || info->spe_64bit_regs_used == 0) && info->first_gp_reg_save < 31); 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. */ if (info->push_p diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 5ba18dce5cd..dd10fa9953b 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1708,6 +1708,8 @@ typedef struct machine_function GTY(()) const char *some_ld_name; /* Whether the instruction chain has been scanned already. */ int insn_chain_scanned_p; + /* Flags if __builtin_return_address (0) was used. */ + int ra_need_lr; } machine_function; /* Define a data type for recording info about an argument list