Commit 7091039c by J"orn Rennecke Committed by Jeff Law

a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying addresses in the…

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
parent 553914ad
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; ...@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment