Commit 393de53f by Richard Kenner

(try_combine): When checking for two sets of the same register in a split insn...

(try_combine): When checking for two sets of the same register in a
split insn, also test for setting a ZERO_EXTRACT, STRICT_LOW_PART, or
SUBREG.

From-SVN: r10783
parent 4bcdd4d0
...@@ -1809,11 +1809,22 @@ try_combine (i3, i2, i1) ...@@ -1809,11 +1809,22 @@ try_combine (i3, i2, i1)
/* It is possible that both insns now set the destination of I3. /* It is possible that both insns now set the destination of I3.
If so, we must show an extra use of it. */ If so, we must show an extra use of it. */
if (insn_code_number >= 0 && GET_CODE (SET_DEST (i3set)) == REG if (insn_code_number >= 0)
&& GET_CODE (SET_DEST (i2set)) == REG {
&& REGNO (SET_DEST (i3set)) == REGNO (SET_DEST (i2set))) rtx new_i3_dest = SET_DEST (i3set);
rtx new_i2_dest = SET_DEST (i2set);
while (GET_CODE (new_i3_dest) == ZERO_EXTRACT
|| GET_CODE (new_i3_dest) == STRICT_LOW_PART
|| GET_CODE (new_i3_dest) == SUBREG)
new_i3_dest = XEXP (new_i3_dest, 0);
if (GET_CODE (new_i3_dest) == REG
&& GET_CODE (new_i2_dest) == REG
&& REGNO (new_i3_dest) == REGNO (new_i2_dest))
reg_n_sets[REGNO (SET_DEST (i2set))]++; reg_n_sets[REGNO (SET_DEST (i2set))]++;
} }
}
/* If we can split it and use I2DEST, go ahead and see if that /* If we can split it and use I2DEST, go ahead and see if that
helps things be recognized. Verify that none of the registers helps things be recognized. Verify that none of the registers
......
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