diff options
Diffstat (limited to 'gcc/config/m68hc11')
-rw-r--r-- | gcc/config/m68hc11/m68hc11.md | 8 |
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))] "") |