From 9f5e873c8f495c56a0a59ceefdb31c5d3453de08 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 13 Oct 1993 15:14:21 -0400 Subject: [PATCH] (optimize_bit_field_compare, decode_field_reference): Don't do anything if get_inner_reference returned its argument. From-SVN: r5773 --- gcc/fold-const.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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) -- 2.30.2