mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 15:40:55 +08:00
simplify-rtx.c (simplify_binary_operation_1): Canonicalize truncated shift counts.
gcc/ * simplify-rtx.c (simplify_binary_operation_1): Canonicalize truncated shift counts. From-SVN: r129072
This commit is contained in:
parent
ed540c0ab9
commit
cbc9503d78
@ -1,3 +1,8 @@
|
||||
2007-10-07 Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
* simplify-rtx.c (simplify_binary_operation_1): Canonicalize
|
||||
truncated shift counts.
|
||||
|
||||
2007-10-07 Kazu Hirata <kazu@codesourcery.com>
|
||||
|
||||
* config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
|
||||
|
@ -2562,6 +2562,13 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
|
||||
&& (unsigned HOST_WIDE_INT) INTVAL (trueop0) == GET_MODE_MASK (mode)
|
||||
&& ! side_effects_p (op1))
|
||||
return op0;
|
||||
canonicalize_shift:
|
||||
if (SHIFT_COUNT_TRUNCATED && GET_CODE (op1) == CONST_INT)
|
||||
{
|
||||
val = INTVAL (op1) & (GET_MODE_BITSIZE (mode) - 1);
|
||||
if (val != INTVAL (op1))
|
||||
return simplify_gen_binary (code, mode, op0, GEN_INT (val));
|
||||
}
|
||||
break;
|
||||
|
||||
case ASHIFT:
|
||||
@ -2571,7 +2578,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
|
||||
return op0;
|
||||
if (trueop0 == CONST0_RTX (mode) && ! side_effects_p (op1))
|
||||
return op0;
|
||||
break;
|
||||
goto canonicalize_shift;
|
||||
|
||||
case LSHIFTRT:
|
||||
if (trueop1 == CONST0_RTX (mode))
|
||||
@ -2593,7 +2600,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
|
||||
return simplify_gen_relational (EQ, mode, imode,
|
||||
XEXP (op0, 0), const0_rtx);
|
||||
}
|
||||
break;
|
||||
goto canonicalize_shift;
|
||||
|
||||
case SMIN:
|
||||
if (width <= HOST_BITS_PER_WIDE_INT
|
||||
|
Loading…
x
Reference in New Issue
Block a user