re PR target/14542 (ICE on simple source)
authorStephane Carrez <stcarrez@nerim.fr>
Sun, 6 Jun 2004 17:01:07 +0000 (19:01 +0200)
committerStephane Carrez <ciceron@gcc.gnu.org>
Sun, 6 Jun 2004 17:01:07 +0000 (19:01 +0200)
PR target/14542
* config/m68hc11/m68hc11.md (move peephole2): Emit a use note to avoid
a live change of a register after peephole replacement.

From-SVN: r82673

gcc/ChangeLog
gcc/config/m68hc11/m68hc11.md

index f3f622e7ba6183f83f289e88d66d9136af278c1d..bb55756a442d0c36bda97c80f5386cd44234cb4f 100644 (file)
@@ -1,3 +1,9 @@
+2004-06-06  Stephane Carrez  <stcarrez@nerim.fr>
+
+       PR target/14542
+       * config/m68hc11/m68hc11.md (move peephole2): Emit a use note to avoid
+       a live change of a register after peephole replacement.
+
 2004-06-06  Joseph S. Myers  <jsm@polyomino.org.uk>
 
        PR c/13519
index 364bdbb6ff87de9ee808589b5f749f83077152d2..be8ffbf4047a0ad04a56260d4b7643c5b8ee00d6 100644 (file)
                                   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" ""))
    (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))]
   "")