combine.c (if_then_else_cond): Canonicalize BImode true to STORE_FLAG_VALUE.
* combine.c (if_then_else_cond): Canonicalize BImode true to STORE_FLAG_VALUE. * explow.c (trunc_int_for_mode): Likewise. From-SVN: r36507
This commit is contained in:
parent
5bd60ce6de
commit
1f3f36d154
3 changed files with 16 additions and 0 deletions
|
@ -1,5 +1,9 @@
|
|||
2000-09-18 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* combine.c (if_then_else_cond): Canonicalize BImode true to
|
||||
STORE_FLAG_VALUE.
|
||||
* explow.c (trunc_int_for_mode): Likewise.
|
||||
|
||||
* combine.c (combine_simplify_rtx): Use gen_unary to distribute
|
||||
the NOT for De Morgan's rule.
|
||||
* simplify-rtx.c (simplify_unary_operation): Simplify a BImode NOT
|
||||
|
|
|
@ -7418,6 +7418,14 @@ if_then_else_cond (x, ptrue, pfalse)
|
|||
|| ((cond0 = get_last_value (x)) != 0 && CONSTANT_P (cond0)))
|
||||
;
|
||||
|
||||
/* If we're in BImode, canonicalize on 0 and STORE_FLAG_VALUE, as that
|
||||
will be least confusing to the rest of the compiler. */
|
||||
else if (mode == BImode)
|
||||
{
|
||||
*ptrue = GEN_INT (STORE_FLAG_VALUE), *pfalse = const0_rtx;
|
||||
return x;
|
||||
}
|
||||
|
||||
/* If X is known to be either 0 or -1, those are the true and
|
||||
false values when testing X. */
|
||||
else if (x == constm1_rtx || x == const0_rtx
|
||||
|
|
|
@ -52,6 +52,10 @@ trunc_int_for_mode (c, mode)
|
|||
{
|
||||
int width = GET_MODE_BITSIZE (mode);
|
||||
|
||||
/* Canonicalize BImode to 0 and STORE_FLAG_VALUE. */
|
||||
if (mode == BImode)
|
||||
return c & 1 ? STORE_FLAG_VALUE : 0;
|
||||
|
||||
/* We clear out all bits that don't belong in MODE, unless they and our
|
||||
sign bit are all one. So we get either a reasonable negative
|
||||
value or a reasonable unsigned value. */
|
||||
|
|
Loading…
Add table
Reference in a new issue