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>
|
2015-04-15 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR ipa/65765
|
PR ipa/65765
|
||||||
|
@ -3150,6 +3150,15 @@ fold_rtx (rtx x, rtx_insn *insn)
|
|||||||
{
|
{
|
||||||
case MEM:
|
case MEM:
|
||||||
case SUBREG:
|
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)
|
if ((new_rtx = equiv_constant (x)) != NULL_RTX)
|
||||||
return new_rtx;
|
return new_rtx;
|
||||||
return x;
|
return x;
|
||||||
|
Loading…
Reference in New Issue
Block a user