diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2002-07-16 15:14:22 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2002-07-16 15:14:22 +0000 |
commit | 3894f59ee4d9556d92f0a4b06741a2219dc05a70 (patch) | |
tree | 564c27592a91d32900ed68feade093e1c0acefc8 /gcc | |
parent | 9406d60d5ea3a092d81e98a32330dd2158a09d38 (diff) | |
download | gcc-3894f59ee4d9556d92f0a4b06741a2219dc05a70.zip gcc-3894f59ee4d9556d92f0a4b06741a2219dc05a70.tar.gz gcc-3894f59ee4d9556d92f0a4b06741a2219dc05a70.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 11 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 10 |
3 files changed, 18 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1005b8c..ea6617b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 17d7750..0632397 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -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 diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 8b45862..8e4b9c0 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -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" |