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)