Commit e4746336 by Joern Rennecke Committed by Joern Rennecke

re PR target/46436 (m68hc11-elf --enable-werror-always build fails)

	PR target/46436
	* config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Split shift count
	to accomodate 32 bit HOST_WIDE_INT.
	(m68hc11_emit_logical): Remove unused variable insn.
	(m68hc11_check_z_replacement) <CLOBBER>: Set this_insn_uses_ix and
	this_insn_uses_iy before use.

From-SVN: r166952
parent 5386338c
2010-11-19 Joern Rennecke <amylaar@spamcop.net>
PR target/46436
* config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Split shift count
to accomodate 32 bit HOST_WIDE_INT.
(m68hc11_emit_logical): Remove unused variable insn.
(m68hc11_check_z_replacement) <CLOBBER>: Set this_insn_uses_ix and
this_insn_uses_iy before use.
2010-11-19 Joseph Myers <joseph@codesourcery.com> 2010-11-19 Joseph Myers <joseph@codesourcery.com>
PR c/46547 PR c/46547
...@@ -1999,7 +1999,7 @@ m68hc11_gen_highpart (enum machine_mode mode, rtx x) ...@@ -1999,7 +1999,7 @@ m68hc11_gen_highpart (enum machine_mode mode, rtx x)
} }
else if (mode == SImode) else if (mode == SImode)
{ {
return gen_int_mode (val >> 32, SImode); return gen_int_mode ((val >> 16) >> 16, SImode);
} }
} }
if (mode == QImode && D_REG_P (x)) if (mode == QImode && D_REG_P (x))
...@@ -2967,8 +2967,6 @@ m68hc11_emit_logical (enum machine_mode mode, enum rtx_code code, rtx *operands) ...@@ -2967,8 +2967,6 @@ m68hc11_emit_logical (enum machine_mode mode, enum rtx_code code, rtx *operands)
} }
else if (operands[1] != 0 && operands[2] != 0) else if (operands[1] != 0 && operands[2] != 0)
{ {
rtx insn;
if (!H_REG_P (operands[0]) && operands[3]) if (!H_REG_P (operands[0]) && operands[3])
{ {
emit_move_insn (operands[3], operands[1]); emit_move_insn (operands[3], operands[1]);
...@@ -2976,15 +2974,13 @@ m68hc11_emit_logical (enum machine_mode mode, enum rtx_code code, rtx *operands) ...@@ -2976,15 +2974,13 @@ m68hc11_emit_logical (enum machine_mode mode, enum rtx_code code, rtx *operands)
operands[3], operands[3],
gen_rtx_fmt_ee (code, mode, gen_rtx_fmt_ee (code, mode,
operands[3], operands[2]))); operands[3], operands[2])));
insn = emit_move_insn (operands[0], operands[3]); emit_move_insn (operands[0], operands[3]);
} }
else else
{ {
insn = emit_insn (gen_rtx_SET (mode, emit_insn (gen_rtx_SET (mode, operands[0],
operands[0], gen_rtx_fmt_ee (code, mode,
gen_rtx_fmt_ee (code, mode, operands[0], operands[2])));
operands[0],
operands[2])));
} }
} }
...@@ -4657,6 +4653,10 @@ m68hc11_check_z_replacement (rtx insn, struct replace_info *info) ...@@ -4657,6 +4653,10 @@ m68hc11_check_z_replacement (rtx insn, struct replace_info *info)
} }
if (GET_CODE (body) == CLOBBER) if (GET_CODE (body) == CLOBBER)
{ {
rtx dst = XEXP (body, 0);
this_insn_uses_ix = reg_mentioned_p (ix_reg, dst);
this_insn_uses_iy = reg_mentioned_p (iy_reg, dst);
/* IX and IY are used at the same time, we have to restore /* IX and IY are used at the same time, we have to restore
the value of the scratch register before this insn. */ the value of the scratch register before this insn. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment