re PR rtl-optimization/42522 ((zero_extract:SI (mem:QI) ...) misoptimized)
PR rtl-optimization/42522 * cse.c (fold_rtx): Try to simplify a ZERO_EXTRACT or SIGN_EXTRACT as a whole object rather than simplifying its operand. From-SVN: r222125
This commit is contained in:
parent
366ee94b44
commit
5141ed4263
@ -1,3 +1,10 @@
|
||||
2015-04-15 Jeff Law <law@redhat.com>
|
||||
|
||||
PR rtl-optimization/42522
|
||||
* cse.c (fold_rtx): Try to simplify a ZERO_EXTRACT or
|
||||
SIGN_EXTRACT as a whole object rather than simplifying
|
||||
its operand.
|
||||
|
||||
2015-04-15 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR ipa/65765
|
||||
|
@ -3150,6 +3150,15 @@ fold_rtx (rtx x, rtx_insn *insn)
|
||||
{
|
||||
case MEM:
|
||||
case SUBREG:
|
||||
/* The first operand of a SIGN/ZERO_EXTRACT has a different meaning
|
||||
than it would in other contexts. Basically its mode does not
|
||||
signify the size of the object read. That information is carried
|
||||
by size operand. If we happen to have a MEM of the appropriate
|
||||
mode in our tables with a constant value we could simplify the
|
||||
extraction incorrectly if we allowed substitution of that value
|
||||
for the MEM. */
|
||||
case ZERO_EXTRACT:
|
||||
case SIGN_EXTRACT:
|
||||
if ((new_rtx = equiv_constant (x)) != NULL_RTX)
|
||||
return new_rtx;
|
||||
return x;
|
||||
|
Loading…
Reference in New Issue
Block a user