> -----Original Message----- > From: Eric Botcazou [mailto:ebotca...@adacore.com] > Sent: 28 November 2013 11:27 > To: Paulo Matos > Cc: gcc@gcc.gnu.org > Subject: Re: reg_nonzero_bits_for_combine misunderstood > > > Right, didn't notice nonzero_sign_valid below. I think restricting mode == > > last_set_mode is too restrictive. > > > > nonzero_bits is still valid if the new mode has less precision than the old > > mode. > > Sure, but I'm not suggesting to restrict anything, quite the contrary: > > { > unsigned HOST_WIDE_INT mask = rsp->last_set_nonzero_bits; > > if (GET_MODE_PRECISION (rsp->last_set_mode) < GET_MODE_PRECISION (mode)) > /* We don't know anything about the upper bits. */ > mask |= GET_MODE_MASK (mode) ^ GET_MODE_MASK (rsp->last_set_mode); > *nonzero &= mask; > return NULL; > }
Ah, I re-read your message. :) Your initial suggestion was to duplicate the patch in nonzero_sign_valid, not to duplicate the fix already in nonzero_sign_valid to nonzero_bits. Sorry. Yes, I agree with your patch. That should be the way to go. If you're ok with it I will submit a patch to nonzero_bits and nonzero_sign_valid based on our discussion to gcc-patches for approval.