From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/6647 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH 3/4] use exact types for the [U]INTXX_C macros Date: Tue, 2 Dec 2014 14:44:35 -0500 Message-ID: <20141202194435.GG29621@brightrain.aerifal.cx> References: <1416926886.16006.925.camel@eris.loria.fr> <20141202180355.GD29621@brightrain.aerifal.cx> <1417548001.4936.1106.camel@eris.loria.fr> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1417549496 31133 80.91.229.3 (2 Dec 2014 19:44:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 2 Dec 2014 19:44:56 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-6660-gllmg-musl=m.gmane.org@lists.openwall.com Tue Dec 02 20:44:49 2014 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1XvtNR-0003pI-0p for gllmg-musl@m.gmane.org; Tue, 02 Dec 2014 20:44:49 +0100 Original-Received: (qmail 9335 invoked by uid 550); 2 Dec 2014 19:44:47 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 9323 invoked from network); 2 Dec 2014 19:44:47 -0000 Content-Disposition: inline In-Reply-To: <1417548001.4936.1106.camel@eris.loria.fr> User-Agent: Mutt/1.5.21 (2010-09-15) Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:6647 Archived-At: On Tue, Dec 02, 2014 at 08:20:01PM +0100, Jens Gustedt wrote: > Am Dienstag, den 02.12.2014, 13:03 -0500 schrieb Rich Felker: > > On Tue, Nov 25, 2014 at 03:50:06PM +0100, Jens Gustedt wrote: > > > The C standard requires the exact types [u]int_leastXX_t for these > > > macros in 7.20.4.1 > > > > You've misread the standard, and I did too originally. This was fixed > > in commit a591e0383a0a31ac94541846796b93fedc63a0c4. The relevant text > > is (C99 7.18.4 or C11 7.20.4, paragraph 3): > > > > "Each invocation of one of these macros shall expand to an integer > > constant expression suitable for use in #if preprocessing directives. > > The type of the expression shall have the same type as would an > > expression of the corresponding type converted according to the > > integer promotions. The value of the expression shall be that of the > > argument." > > > > In the text you're looking at: > > > > "The macro INTN_C(value) shall expand to an integer constant > > expression corresponding to the type int_leastN_t. The macro > > UINTN_C(value) shall expand to an integer constant expression > > corresponding to the type uint_leastN_t. For example, if > > uint_least64_t is a name for the type unsigned long long int, then > > UINT64_C(0x123) might expand to the integer constant 0x123ULL." > > > > the "correspondence" referred to by "corresponding" should be > > interpreted as the one via integer promotions in the above text I > > cited. > > No, that doesn't seem to be the view of the committee on that > issue. There is a ongoing DR on that and the consensus of the > committee in the discussion seems to be that this is the required > type, e.g to be usable in _Generic. > > The only ambiguity there seemed to be that they were convinced that > this needs internal compiler magic to be achieved, which isn't the > case. Do you have a citation for this? What on earth is the point of the text I quoted about promoted types if your interpretation of the text that follows is correct? Rich