*** empty log message ***
From-SVN: r1316
This commit is contained in:
parent
47545f760f
commit
02f4ada4da
@ -1483,6 +1483,7 @@ try_combine (i3, i2, i1)
|
||||
/* If I2DEST is a hard register or the only use of a pseudo,
|
||||
we can change its mode. */
|
||||
if (GET_MODE (SET_DEST (newpat)) != GET_MODE (i2dest)
|
||||
&& GET_MODE (SET_DEST (newpat)) != VOIDmode
|
||||
&& (REGNO (i2dest) < FIRST_PSEUDO_REGISTER
|
||||
|| (reg_n_sets[REGNO (i2dest)] == 1 && ! added_sets_2
|
||||
&& ! REG_USERVAR_P (i2dest))))
|
||||
@ -2952,6 +2953,18 @@ subst (x, from, to, in_dest, unique_copy)
|
||||
GET_MODE_BITSIZE (mode) - 1);
|
||||
goto restart;
|
||||
}
|
||||
|
||||
/* If we are adding two things that have no bits in common, convert
|
||||
the addition into an IOR. This will often be further simplified,
|
||||
for example in cases like ((a & 1) + (a & 2)), which can
|
||||
become a & 3. */
|
||||
|
||||
if ((significant_bits (XEXP (x, 0), mode)
|
||||
& significant_bits (XEXP (x, 1), mode)) == 0)
|
||||
{
|
||||
x = gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1));
|
||||
goto restart;
|
||||
}
|
||||
break;
|
||||
|
||||
case MINUS:
|
||||
@ -2966,18 +2979,6 @@ subst (x, from, to, in_dest, unique_copy)
|
||||
- INTVAL (XEXP (XEXP (x, 1), 1)) - 1);
|
||||
goto restart;
|
||||
}
|
||||
|
||||
/* If we are adding two things that have no bits in common, convert
|
||||
the addition into an IOR. This will often be further simplified,
|
||||
for example in cases like ((a & 1) + (a & 2)), which can
|
||||
become a & 3. */
|
||||
|
||||
if ((significant_bits (XEXP (x, 0), mode)
|
||||
& significant_bits (XEXP (x, 1), mode)) == 0)
|
||||
{
|
||||
x = gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1));
|
||||
goto restart;
|
||||
}
|
||||
break;
|
||||
|
||||
case MULT:
|
||||
|
Loading…
Reference in New Issue
Block a user