------- Comment #6 from jakub at gcc dot gnu dot org  2007-12-04 20:50 -------
It is the:
          /* Minimize the number of bits set in C1, i.e. C1 := C1 & ~C2.  */
          hi1 &= mhi;
          lo1 &= mlo;
          if ((hi1 & ~hi2) != hi1 || (lo1 & ~lo2) != lo1)
            return fold_build2 (BIT_IOR_EXPR, type,
                                fold_build2 (BIT_AND_EXPR, type,
                                             TREE_OPERAND (arg0, 0), 
                                             build_int_cst_wide (type,
                                                                 lo1 & ~lo2,
                                                                 hi1 & ~hi2)),
                                arg1);
optimization that fights against the new optimization.  Guess a simple check
if fold_build2 of the BIT_AND_EXPR has created again a BIT_AND_EXPR with the
same first argument and second argument became the original constant should
cure it, will test tomorrow.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34337

Reply via email to