re PR rtl-optimization/58295 (Missed zero-extension elimination in the combiner)

PR rtl-optimization/58295
	* simplify-rtx.c (simplify_truncation): Restrict the distribution for
	WORD_REGISTER_OPERATIONS targets.

From-SVN: r205874
This commit is contained in:
Eric Botcazou 2013-12-10 22:58:37 +00:00 committed by Eric Botcazou
parent 688974a346
commit 808c43038c
2 changed files with 16 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2013-12-10 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/58295
* simplify-rtx.c (simplify_truncation): Restrict the distribution for
WORD_REGISTER_OPERATIONS targets.
2013-12-10 Richard Sandiford <rdsandiford@googlemail.com>
* genrecog.c (validate_pattern): Treat all messages except missing

View File

@ -640,11 +640,16 @@ simplify_truncation (enum machine_mode mode, rtx op,
XEXP (op, 0), origmode);
}
/* Simplify (truncate:SI (op:DI (x:DI) (y:DI)))
to (op:SI (truncate:SI (x:DI)) (truncate:SI (x:DI))). */
if (GET_CODE (op) == PLUS
|| GET_CODE (op) == MINUS
|| GET_CODE (op) == MULT)
/* If the machine can perform operations in the truncated mode, distribute
the truncation, i.e. simplify (truncate:QI (op:SI (x:SI) (y:SI))) into
(op:QI (truncate:QI (x:SI)) (truncate:QI (y:SI))). */
if (1
#ifdef WORD_REGISTER_OPERATIONS
&& precision >= BITS_PER_WORD
#endif
&& (GET_CODE (op) == PLUS
|| GET_CODE (op) == MINUS
|| GET_CODE (op) == MULT))
{
rtx op0 = simplify_gen_unary (TRUNCATE, mode, XEXP (op, 0), op_mode);
if (op0)