Commit dc577ada by James Van Artsdalen

(movM): If REG_WAS_0, make sure the reg hasn't changed since then.

From-SVN: r3712
parent 9516a9af
...@@ -57,9 +57,11 @@ ...@@ -57,9 +57,11 @@
rtx link; rtx link;
if (operands[1] == const1_rtx if (operands[1] == const1_rtx
&& (link = find_reg_note (insn, REG_WAS_0, 0)) && (link = find_reg_note (insn, REG_WAS_0, 0))
&& ! XEXP (link, 0)->volatil && ! INSN_DELETED_P (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE && GET_CODE (XEXP (link, 0)) != NOTE
&& no_labels_between_p (XEXP (link, 0), insn)) && no_labels_between_p (XEXP (link, 0), insn)
/* Make sure the reg hasn't been clobbered. */
&& ! reg_set_between_p (operands[0], XEXP (link, 0), insn))
return \"incl %0\"; return \"incl %0\";
if (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST) if (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST)
{ {
...@@ -86,9 +88,11 @@ ...@@ -86,9 +88,11 @@
rtx link; rtx link;
if (operands[1] == const1_rtx if (operands[1] == const1_rtx
&& (link = find_reg_note (insn, REG_WAS_0, 0)) && (link = find_reg_note (insn, REG_WAS_0, 0))
&& ! XEXP (link, 0)->volatil && ! INSN_DELETED_P (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE && GET_CODE (XEXP (link, 0)) != NOTE
&& no_labels_between_p (XEXP (link, 0), insn)) && no_labels_between_p (XEXP (link, 0), insn)
/* Make sure the reg hasn't been clobbered. */
&& ! reg_set_between_p (operands[0], XEXP (link, 0), insn))
return \"incw %0\"; return \"incw %0\";
if (operands[1] == const0_rtx) if (operands[1] == const0_rtx)
return \"clrw %0\"; return \"clrw %0\";
......
...@@ -207,7 +207,9 @@ ...@@ -207,7 +207,9 @@
&& ! INSN_DELETED_P (XEXP (link, 0)) && ! INSN_DELETED_P (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE && GET_CODE (XEXP (link, 0)) != NOTE
/* Make sure cross jumping didn't happen here. */ /* Make sure cross jumping didn't happen here. */
&& no_labels_between_p (XEXP (link, 0), insn)) && no_labels_between_p (XEXP (link, 0), insn)
/* Make sure the reg hasn't been clobbered. */
&& ! reg_set_between_p (operands[0], XEXP (link, 0), insn))
return \"incl %0\"; return \"incl %0\";
if (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST) if (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST)
{ {
...@@ -250,7 +252,9 @@ ...@@ -250,7 +252,9 @@
&& ! INSN_DELETED_P (XEXP (link, 0)) && ! INSN_DELETED_P (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE && GET_CODE (XEXP (link, 0)) != NOTE
/* Make sure cross jumping didn't happen here. */ /* Make sure cross jumping didn't happen here. */
&& no_labels_between_p (XEXP (link, 0), insn)) && no_labels_between_p (XEXP (link, 0), insn)
/* Make sure the reg hasn't been clobbered. */
&& ! reg_set_between_p (operands[0], XEXP (link, 0), insn))
return \"incw %0\"; return \"incw %0\";
if (GET_CODE (operands[1]) == CONST_INT) if (GET_CODE (operands[1]) == CONST_INT)
...@@ -302,7 +306,9 @@ ...@@ -302,7 +306,9 @@
&& ! INSN_DELETED_P (XEXP (link, 0)) && ! INSN_DELETED_P (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE && GET_CODE (XEXP (link, 0)) != NOTE
/* Make sure cross jumping didn't happen here. */ /* Make sure cross jumping didn't happen here. */
&& no_labels_between_p (XEXP (link, 0), insn)) && no_labels_between_p (XEXP (link, 0), insn)
/* Make sure the reg hasn't been clobbered. */
&& ! reg_set_between_p (operands[0], XEXP (link, 0), insn))
return \"incb %0\"; return \"incb %0\";
if (GET_CODE (operands[1]) == CONST_INT) if (GET_CODE (operands[1]) == CONST_INT)
......
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