summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/darwin.h
diff options
context:
space:
mode:
authorfroydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-26 20:12:41 +0000
committerfroydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-26 20:12:41 +0000
commit9ef25fc1003ee050c1bfe24af6575cb72b157ce2 (patch)
treea4b578b731cb2590f6903b103e988eaafd60303a /gcc/config/rs6000/darwin.h
parent25ae9ba2890e790638f27e8006d2090e74d1bfb1 (diff)
downloadgcc-9ef25fc1003ee050c1bfe24af6575cb72b157ce2.tar.gz
* config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
parameter. Copy stack_reg to r11 where appropriate. (no_global_regs_above): Add gpr parameter. (rs6000_stack_info): Only add padding for SPE save area if we are saving SPE GPRs and CR. (saveres_routine_syms): New variable. (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS): Define. (rs6000_savres_routine_sym): New function. (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions, split out of... (rs6000_emit_epilogue): ...here. Use rs6000_use_multiple_p and rs6000_savres_strategy. Restore GPRs out-of-line if appropriate. Tweak FPR out-of-line saving. (rs6000_make_savres_rtx): New function. (rs6000_use_multiple_p): New function. (rs6000_savres_strategy): New function. (rs6000_emit_prologue): Use rs6000_savres_strategy. Save GPRs out-of-line if appropriate. * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line if we are optimizing for size. (GP_SAVE_INLINE): Define. (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets. * config/rs6000/darwin.h (GP_SAVE_INLINE): Define. * config/rs6000/aix.h (GP_SAVE_INLINE): Define. * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn. (*save_fpregs_<mode>): Add use of r11. (*restore_gpregs_<mode>): New insn. (*return_and_restore_gpregs_<mode>): New insn. (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and use r11. * config/rs6000/spe.md (*save_gpregs_spe): New insn. (*restore_gpregs_spe): New insn. (*return_and_restore_gpregs_spe): New insn. * config/rs6000/predicates.md (save_world_operation): Fix check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137160 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/darwin.h')
-rw-r--r--gcc/config/rs6000/darwin.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 9479fc312ca..d8550c86dfb 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -191,6 +191,8 @@
#undef FP_SAVE_INLINE
#define FP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 64)
+#undef GP_SAVE_INLINE
+#define GP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 32)
/* Darwin uses a function call if everything needs to be saved/restored. */
#undef WORLD_SAVE_P