From: Richard Kenner Date: Wed, 13 Oct 1993 19:14:21 +0000 (-0400) Subject: (optimize_bit_field_compare, decode_field_reference): Don't do X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9f5e873c8f495c56a0a59ceefdb31c5d3453de08;p=gcc.git (optimize_bit_field_compare, decode_field_reference): Don't do anything if get_inner_reference returned its argument. From-SVN: r5773 --- diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 4e6aad4a0ce..a08e7ca50ca 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -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)