diff options
author | Jakub Jelinek <jakub@redhat.com> | 2003-07-21 22:18:52 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2003-07-21 22:18:52 +0200 |
commit | 8c29550d3c6fbc405e1039246ae4425c7cbb8d3b (patch) | |
tree | ecc1e8adb5b895c328d969409e5b50536d2d04f8 /gcc | |
parent | 92cbea22145792b5f621a6ee277bad91876f40ff (diff) | |
download | gcc-8c29550d3c6fbc405e1039246ae4425c7cbb8d3b.zip gcc-8c29550d3c6fbc405e1039246ae4425c7cbb8d3b.tar.gz gcc-8c29550d3c6fbc405e1039246ae4425c7cbb8d3b.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b2247a..cd57ee3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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> * config/ia64/ia64.md (prefetch): Support predicate. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 8f26897..580d951 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 5ba18dc..dd10fa9 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 |