On Tue, 26 Jul 2011, Sebastian Pop wrote: > On Tue, Jul 26, 2011 at 09:07, Richard Guenther <rguent...@suse.de> wrote: > >> > Randomly sign-extending stuff looks bogus to me. > >> > Does graphite operate on infinite precision signed integers? Or > >> > does it operate on twos-complement fixed precision integers? > >> > >> Graphite represents constants using mpz_t. > > > > Not exactly an answer but I guess all mpz_t do have a sign and are > > of arbitrary precision. Thus it's wrong to change unsigned + -1U > > to mpz_t + -1 unless you truncate to unsigneds precision after > > doing that operation. Do we properly handle this? > > Graphite is not truncating after conversion of an unsigned expression to > mpz_t. > > I still don't see how truncating -1U to its precision changes anything, > could you explain?
Truncating -1 doesn't matter - it matters that if you perform any unsigned arithmetic in arbitrary precision signed arithmetic that you properly truncate after each operation to simulate unsigned twos-complement wrapping semantic. And if you did that you wouldn't need to sign-extend -1U either. Richard.