a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying addresses in the epilogue delay slot.
* a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying addresses in the epilogue delay slot. From-SVN: r16394
This commit is contained in:
parent
553914ad8b
commit
7091039c68
|
@ -1,3 +1,8 @@
|
||||||
|
Sun Nov 9 02:00:29 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||||
|
|
||||||
|
* a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying
|
||||||
|
addresses in the epilogue delay slot.
|
||||||
|
|
||||||
Sun Nov 9 01:40:40 1997 Manfred Hollstein (manfred@s-direktnet.de)
|
Sun Nov 9 01:40:40 1997 Manfred Hollstein (manfred@s-direktnet.de)
|
||||||
|
|
||||||
* m88k/dgux.h (ASM_CPU_SPEC): Reformatted to suppress wrong whitespace
|
* m88k/dgux.h (ASM_CPU_SPEC): Reformatted to suppress wrong whitespace
|
||||||
|
|
|
@ -987,13 +987,18 @@ extern char *a29k_function_name;
|
||||||
|
|
||||||
On the 29k, we must be able to place it in a delay slot, it must
|
On the 29k, we must be able to place it in a delay slot, it must
|
||||||
not use sp if the frame pointer cannot be eliminated, and it cannot
|
not use sp if the frame pointer cannot be eliminated, and it cannot
|
||||||
use local regs if we need to push the register stack. */
|
use local regs if we need to push the register stack.
|
||||||
|
If this is a SET with a memory as source, it might load from
|
||||||
|
a stack slot, unless the address is constant. */
|
||||||
|
|
||||||
#define ELIGIBLE_FOR_EPILOGUE_DELAY(INSN,N) \
|
#define ELIGIBLE_FOR_EPILOGUE_DELAY(INSN,N) \
|
||||||
(get_attr_in_delay_slot (INSN) == IN_DELAY_SLOT_YES \
|
(get_attr_in_delay_slot (INSN) == IN_DELAY_SLOT_YES \
|
||||||
&& ! (frame_pointer_needed \
|
&& ! (frame_pointer_needed \
|
||||||
&& reg_mentioned_p (stack_pointer_rtx, PATTERN (INSN))) \
|
&& reg_mentioned_p (stack_pointer_rtx, PATTERN (INSN))) \
|
||||||
&& ! (needs_regstack_p () && uses_local_reg_p (PATTERN (INSN))))
|
&& ! (needs_regstack_p () && uses_local_reg_p (PATTERN (INSN))) \
|
||||||
|
&& (GET_CODE (PATTERN (INSN)) != SET \
|
||||||
|
|| GET_CODE (SET_SRC (PATTERN (INSN))) != MEM \
|
||||||
|
|| ! rtx_varies_p (XEXP (SET_SRC (PATTERN (INSN)), 0))))
|
||||||
|
|
||||||
/* Output assembler code for a block containing the constant parts
|
/* Output assembler code for a block containing the constant parts
|
||||||
of a trampoline, leaving space for the variable parts.
|
of a trampoline, leaving space for the variable parts.
|
||||||
|
|
Loading…
Reference in New Issue