Commit e758023d by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

re PR target/17626 (Recent peephole2:s may cause internal compiler errors)

	PR target/17626
	* config/cris/cris.md (moverside, movemside): Rename variable
	"reg" to "otherop".  To generate canonical RTX, check that otherop
	isn't constant instead of checking that operand 1 is a register.

From-SVN: r87988
parent 3d295b3a
2004-09-23 Hans-Peter Nilsson <hp@axis.com>
PR target/17626
* config/cris/cris.md (moverside, movemside): Rename variable
"reg" to "otherop". To generate canonical RTX, check that otherop
isn't constant instead of checking that operand 1 is a register.
2004-09-23 Jakub Jelinek <jakub@redhat.com> 2004-09-23 Jakub Jelinek <jakub@redhat.com>
* tree-ssa-propagate.c (set_rhs): Fail if EXPR is COMPOUND_EXPR. * tree-ssa-propagate.c (set_rhs): Fail if EXPR is COMPOUND_EXPR.
......
...@@ -4901,17 +4901,19 @@ ...@@ -4901,17 +4901,19 @@
[(set (match_dup 4) (match_dup 6)) [(set (match_dup 4) (match_dup 6))
(set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])] (set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])]
{ {
rtx reg rtx otherop
= rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2]; = rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2];
if (REG_S_P (operands[1])) /* Make sure we have canonical RTX so we match the insn pattern - a
register or MULT in the first operand, not a constant. */
if (CONSTANT_P (otherop))
{ {
operands[7] = operands[1]; operands[7] = operands[1];
operands[8] = reg; operands[8] = otherop;
} }
else else
{ {
operands[7] = reg; operands[7] = otherop;
operands[8] = operands[1]; operands[8] = operands[1];
} }
operands[6] operands[6]
...@@ -4949,17 +4951,19 @@ ...@@ -4949,17 +4951,19 @@
[(set (match_dup 6) (match_dup 5)) [(set (match_dup 6) (match_dup 5))
(set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])] (set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])]
{ {
rtx reg rtx otherop
= rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2]; = rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2];
if (REG_S_P (operands[1])) /* Make sure we have canonical RTX so we match the insn pattern - a
register or MULT in the first operand, not a constant. */
if (CONSTANT_P (otherop))
{ {
operands[7] = operands[1]; operands[7] = operands[1];
operands[8] = reg; operands[8] = otherop;
} }
else else
{ {
operands[7] = reg; operands[7] = otherop;
operands[8] = operands[1]; operands[8] = operands[1];
} }
operands[6] operands[6]
......
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