This is the mail archive of the
cgen@sourceware.org
mailing list for the CGEN project.
Re: [PATCH] Make large enum constants unsigned
- From: "Maciej W. Rozycki" <macro at codesourcery dot com>
- To: Stefan Kristiansson <stefan dot kristiansson at saunalahti dot fi>
- Cc: <cgen at sourceware dot org>, Alan Modra <amodra at gmail dot com>, <fche at sourceware dot org>, Christian Svensson <blue at cmd dot nu>, Pierre Muller <pierre dot muller at ics-cnrs dot unistra dot fr>
- Date: Thu, 22 May 2014 07:21:06 +0100
- Subject: Re: [PATCH] Make large enum constants unsigned
- Authentication-results: sourceware.org; auth=none
- References: <20140522052921 dot GA30609 at chokladfabriken dot org>
On Thu, 22 May 2014, Stefan Kristiansson wrote:
> 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 <stefan.kristiansson@saunalahti.fi>
>
> * enum.scm (gen-enum-decl): Emit 'ULL' after constants larger than
> #x80000000
Well, `ULL' is non-standard for pre-C99 compilers and also not needed
because an enum will never have a type that is wider than `int'. So for
portability's sake I suggest that you use `U' or `u' as I proposed (I
prefer lowercase `u' for decimal constants because I find it easier to
spot among digits, however please feel free to take your pick).
Maciej