aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStephane Carrez <stcarrez@nerim.fr>2004-06-06 19:01:07 +0200
committerStephane Carrez <ciceron@gcc.gnu.org>2004-06-06 19:01:07 +0200
commit37f40c9cfd5acd2f5cf508e0a4d31611373a7bc5 (patch)
tree094a9e438caedf66a301712afe4f219c1b0ac0b3 /gcc
parent10bc1b1bec937131ad05fa18184b985078b99702 (diff)
downloadgcc-37f40c9cfd5acd2f5cf508e0a4d31611373a7bc5.zip
gcc-37f40c9cfd5acd2f5cf508e0a4d31611373a7bc5.tar.gz
gcc-37f40c9cfd5acd2f5cf508e0a4d31611373a7bc5.tar.bz2
re PR target/14542 (ICE on simple source)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/m68hc11/m68hc11.md8
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f3f622e..bb55756 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md
index 364bdbb..be8ffbf 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))]
"")