Re: [PATCH] Make large enum constants unsigned
"Frank Ch. Eigler" <[email protected]> Thu, 22 May 2014 11:09:56 -0400
| Newsgroups | gmane.comp.tools.cgen.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi - > this fixes a bug noted in two threads on the binutils mailing list: > https://sourceware.org/ml/binutils/2014-05/msg00152.html > https://sourceware.org/ml/binutils/2014-05/msg00195.html > > Both threads describe the problem pretty well, but the gist of it > is that constants are generated that will be interpreted as signed. > > 2014-05-22 Stefan Kristiansson <[email protected]> > > * enum.scm (gen-enum-decl): Emit 'ULL' after constants larger than > #x80000000 > [...] > - (number->string (cadr e)) > + (string-append (number->string (cadr e)) > + (if (> (cadr e) > + #x80000000) > + "ULL" "")) Have you thought of having cgen emit it as (string-append "(signed int)" (number->string (cadr e))) ... or even find a number->string conversion function that takes into account the destionation language's encoding constraints. - FChE