From: Mark Mitchell Date: Wed, 26 May 1999 09:50:08 +0000 (+0000) Subject: fold-const.c (fold): STRIP_NOPS when deciding whether or not something is a candidate... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b7f2c1fc1b35311b3aa2c91f896bebef99627167;p=gcc.git fold-const.c (fold): STRIP_NOPS when deciding whether or not something is a candidate for... * fold-const.c (fold): STRIP_NOPS when deciding whether or not something is a candidate for optimize_bit_field_compare. From-SVN: r27169 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 34f612d36a5..2739bd98d97 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed May 26 09:53:05 1999 Mark Mitchell + + * fold-const.c (fold): STRIP_NOPS when deciding whether or not + something is a candidate for optimize_bit_field_compare. + Wed May 26 09:40:02 1999 Mark Mitchell * gcc.texi (Passes): Document branch-shortening. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 6acbe0baf34..b67ff82868d 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -6036,16 +6036,20 @@ fold (expr) } /* If this is a comparison of a field, we may be able to simplify it. */ - if ((TREE_CODE (arg0) == COMPONENT_REF - || TREE_CODE (arg0) == BIT_FIELD_REF) - && (code == EQ_EXPR || code == NE_EXPR) - /* Handle the constant case even without -O - to make sure the warnings are given. */ - && (optimize || TREE_CODE (arg1) == INTEGER_CST)) - { - t1 = optimize_bit_field_compare (code, type, arg0, arg1); - return t1 ? t1 : t; - } + { + tree xarg0 = arg0; + STRIP_NOPS (xarg0); + if ((TREE_CODE (xarg0) == COMPONENT_REF + || TREE_CODE (xarg0) == BIT_FIELD_REF) + && (code == EQ_EXPR || code == NE_EXPR) + /* Handle the constant case even without -O + to make sure the warnings are given. */ + && (optimize || TREE_CODE (arg1) == INTEGER_CST)) + { + t1 = optimize_bit_field_compare (code, type, xarg0, arg1); + return t1 ? t1 : t; + } + } /* If this is a comparison of complex values and either or both sides are a COMPLEX_EXPR or COMPLEX_CST, it is best to split up the