On Tue, 9 Jun 2015, Richard Biener wrote:

> On Tue, 9 Jun 2015, Marc Glisse wrote:
> 
> > On Tue, 9 Jun 2015, Richard Biener wrote:
> > 
> > > > Tweaking it so that (6<<X)==0 becomes X>=31 for TYPE_OVERFLOW_WRAPS and
> > > > false for TYPE_OVERFLOW_UNDEFINED is probably more controversial.
> > > 
> > > Hm, yes.  I think signed overflow != shift amount overflow, so testing the
> > > overflow macros for this isn't valid.
> > 
> > Would it be ok to always turn it to X>=31 then? (the value 31 is 
> > conveniently
> > already computed in 'cand')
> 
> I think so.

Or even ((unsigned)X - 31) < 1 (I probably got that wrong) to properly
say X>=29 && X<32, that is, preserve the implicit upper bound on X
we have because it is used in a shift.

Richard.

> Richard.
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Dilip Upmanyu, Graham 
Norton, HRB 21284 (AG Nuernberg)

Reply via email to