summaryrefslogtreecommitdiff
path: root/gcc/config/m68hc11
diff options
context:
space:
mode:
authorciceron <ciceron@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-06 17:01:07 +0000
committerciceron <ciceron@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-06 17:01:07 +0000
commitd6cea54f8591fea7260c5b6472333e545cdfdd82 (patch)
tree094a9e438caedf66a301712afe4f219c1b0ac0b3 /gcc/config/m68hc11
parent1ea7fa601eb0c73e47f13a8b1bf16975123a8050 (diff)
downloadgcc-d6cea54f8591fea7260c5b6472333e545cdfdd82.tar.gz
PR target/14542
* config/m68hc11/m68hc11.md (move peephole2): Emit a use note to avoid a live change of a register after peephole replacement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82673 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/m68hc11')
-rw-r--r--gcc/config/m68hc11/m68hc11.md8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md
index 364bdbb6ff8..be8ffbf4047 100644
--- a/gcc/config/m68hc11/m68hc11.md
+++ b/gcc/config/m68hc11/m68hc11.md
@@ -6925,6 +6925,11 @@
gen_rtx_REG (HImode, HARD_SP_REGNUM)));")
;; Replace: "pshx; tfr d,x; stx 0,sp" into "pshd; tfr d,x"
+;;
+;; PR 14542: emit a use to pretend we need the value of initial register.
+;; Otherwise verify_local_live_at_start will abort due to a live change
+;; of that register.
+;;
(define_peephole2
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
(match_operand:HI 0 "hard_reg_operand" ""))
@@ -6933,7 +6938,8 @@
(set (mem:HI (reg:HI SP_REGNUM))
(match_dup 0))]
"TARGET_M6812"
- [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
+ [(use (match_dup 0))
+ (set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
(match_dup 1))
(set (match_dup 0) (match_dup 1))]
"")