(optimize_bit_field_compare, decode_field_reference): Don't do

anything if get_inner_reference returned its argument.

From-SVN: r5773
This commit is contained in:
Richard Kenner 1993-10-13 15:14:21 -04:00
parent 49d3ca5c88
commit 9f5e873c8f
1 changed files with 3 additions and 3 deletions

View File

@ -2307,7 +2307,7 @@ optimize_bit_field_compare (code, compare_type, lhs, rhs)
extraction at all and so can do nothing. */
linner = get_inner_reference (lhs, &lbitsize, &lbitpos, &offset, &lmode,
&lunsignedp, &lvolatilep);
if (lbitsize == GET_MODE_BITSIZE (lmode) || lbitsize < 0
if (linner == lhs || lbitsize == GET_MODE_BITSIZE (lmode) || lbitsize < 0
|| offset != 0)
return 0;
@ -2318,7 +2318,7 @@ optimize_bit_field_compare (code, compare_type, lhs, rhs)
rinner = get_inner_reference (rhs, &rbitsize, &rbitpos, &offset,
&rmode, &runsignedp, &rvolatilep);
if (lbitpos != rbitpos || lbitsize != rbitsize
if (rinner == rhs || lbitpos != rbitpos || lbitsize != rbitsize
|| lunsignedp != runsignedp || offset != 0)
return 0;
}
@ -2510,7 +2510,7 @@ decode_field_reference (exp, pbitsize, pbitpos, pmode, punsignedp,
inner = get_inner_reference (exp, pbitsize, pbitpos, &offset, pmode,
punsignedp, pvolatilep);
if (*pbitsize < 0 || offset != 0)
if (inner == exp || *pbitsize < 0 || offset != 0)
return 0;
if (mask == 0)