johannes 02/09/05 18:09:05
Modified: gcc/config/rs6000 rs6000.c
Log:
Fix an Altivec-related bug in epilog code (3029057).
Revision Changes Path
1.171 +6 -2 gcc3/gcc/config/rs6000/rs6000.c
Index: rs6000.c
===================================================================
RCS file: /cvs/Darwin/gcc3/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.170
retrieving revision 1.171
diff -u -r1.170 -r1.171
--- rs6000.c 2002/09/03 23:44:44 1.170
+++ rs6000.c 2002/09/06 01:09:04 1.171
@@ -13808,7 +13808,10 @@
/* Prevent any attempt to delete the setting of R0 or R10! */
RTVEC_ELT (p, j++) = gen_rtx_USE (VOIDmode, gen_rtx_REG (reg_mode, 0));
RTVEC_ELT (p, j++) = gen_rtx_USE (VOIDmode, gen_rtx_REG (reg_mode, 10));
- emit_insn (gen_rtx_PARALLEL (VOIDmode, p));
+ if (vrsave == branch)
+ emit_jump_insn (gen_rtx_PARALLEL (VOIDmode, p));
+ else
+ emit_insn (gen_rtx_PARALLEL (VOIDmode, p));
/* Get the old lr if we saved it. */
if (info->lr_save_p && vrsave == call)
@@ -13860,7 +13863,8 @@
: gen_adddi3 (sp_reg_rtx, sp_reg_rtx, sa));
}
- if (!sibcall)
+ /* APPLE LOCAL Altivec related */
+ if (!sibcall && vrsave != branch)
{
rtvec p;
if (! restoring_FPRs_inline)