> -----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.

Reply via email to