mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-03 01:30:42 +08:00
arm.md (stack_tie): New insn.
* arm.md (stack_tie): New insn. Use an idiom that the alias code understands to be a memory clobber. * arm.c (arm_expand_prologue): Use it. From-SVN: r55486
This commit is contained in:
parent
9406d60d5e
commit
3894f59ee4
@ -1,3 +1,9 @@
|
||||
2002-07-16 Richard Earnshaw <rearnsha@arm.com>
|
||||
|
||||
* arm.md (stack_tie): New insn. Use an idiom that the alias code
|
||||
understands to be a memory clobber.
|
||||
* arm.c (arm_expand_prologue): Use it.
|
||||
|
||||
2002-07-16 Daniel Berlin <dberlin@dberlin.org>
|
||||
|
||||
* ra-rewrite.c: #include reload.h, insn-config.h
|
||||
|
@ -8387,15 +8387,8 @@ arm_expand_prologue ()
|
||||
will prevent the scheduler from moving stores to the frame
|
||||
before the stack adjustment. */
|
||||
if (frame_pointer_needed)
|
||||
{
|
||||
rtx unspec = gen_rtx_UNSPEC (SImode,
|
||||
gen_rtvec (2, stack_pointer_rtx,
|
||||
hard_frame_pointer_rtx),
|
||||
UNSPEC_PRLG_STK);
|
||||
|
||||
insn = emit_insn (gen_rtx_CLOBBER (VOIDmode,
|
||||
gen_rtx_MEM (BLKmode, unspec)));
|
||||
}
|
||||
insn = emit_insn (gen_stack_tie (stack_pointer_rtx,
|
||||
hard_frame_pointer_rtx));
|
||||
}
|
||||
|
||||
/* If we are profiling, make sure no instructions are scheduled before
|
||||
|
@ -8883,6 +8883,16 @@
|
||||
[(set_attr "type" "store4")]
|
||||
)
|
||||
|
||||
(define_insn "stack_tie"
|
||||
[(set (mem:BLK (scratch))
|
||||
(unspec:BLK [(match_operand:SI 0 "s_register_operand" "r")
|
||||
(match_operand:SI 1 "s_register_operand" "r")]
|
||||
UNSPEC_PRLG_STK))]
|
||||
""
|
||||
""
|
||||
[(set_attr "length" "0")]
|
||||
)
|
||||
|
||||
;; Similarly for the floating point registers
|
||||
(define_insn "*push_fp_multi"
|
||||
[(match_parallel 2 "multi_register_push"
|
||||
|
Loading…
x
Reference in New Issue
Block a user