From owner-sc22wg14+sc22wg14-domo2=www.open-std.org@open-std.org  Tue Aug 25 18:31:34 2026
Return-Path: <owner-sc22wg14+sc22wg14-domo2=www.open-std.org@open-std.org>
X-Original-To: sc22wg14-domo2
Delivered-To: sc22wg14-domo2@www.open-std.org
Received: by www.open-std.org (Postfix, from userid 521)
	id 1D2CE356E50; Tue, 25 Aug 2026 18:31:34 +0200 (CEST)
Delivered-To: sc22wg14@open-std.org
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124])
	by www.open-std.org (Postfix) with ESMTP id 902F9356BEF
	for <sc22wg14@open-std.org>; Tue, 25 Aug 2026 18:31:32 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1787675492;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type;
	bh=4220EFJK2iKB+bS7XolVT9LxFbesKUorehM9G+Y0p1o=;
	b=CeyFyQCByD0ATRdtViHsMO5IVXkAXiTXRJRX8gihm4HYy2af8FIdtqXRe7MaXdF9Ip1oSG
	G3aasMXaBa2mevF3QxVJnUkzgdLMU9gHlp/DpuwSGfjogOGZ9LiHYpmaJtQnm71ylvmyYP
	PkmVV01SJvCsy9EQPwRUyfDjTM1BIDQ=
Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com
 [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-477-hxrxf5oAN3ObMbggU7vtOw-1; Tue, 25 Aug 2026 12:31:29 -0400
X-MC-Unique: hxrxf5oAN3ObMbggU7vtOw-1
X-Mimecast-MFC-AGG-ID: hxrxf5oAN3ObMbggU7vtOw_1787675488
Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-499b99a8a10so6590605e9.0
        for <sc22wg14@open-std.org>; Tue, 25 Aug 2026 09:31:29 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1787675488; x=1788280288;
        h=content-type:mime-version:message-id:subject:to:from:date:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=4220EFJK2iKB+bS7XolVT9LxFbesKUorehM9G+Y0p1o=;
        b=FaeM3P4AYZ5J8UG/w+gDT3WnTShRJkmbwK9O79yZ/MQuOU0Hcv3pPB6pC9e0LbGEU4
         HU+P4M7d2wAz+bVNlZWCtPPaeTNIFUZw/tqjGqgBD87mSHSYTUkMMTK4wocm2dkC79VO
         lAIElc2bvRZH4ovsmhhKRrRvybMYrUCZUPhOEevh05bguoDilgGRSdifAoqVpo1cd+I7
         Ubw09PmXRMRWejDesqLwquXogE8qcDthbTCaO7rZeATjVjvo5Kie035YpXL/SLZBQXAQ
         obIa4lmvr7db6qG1URZOeT8AK+H2UTzPuGqTizMwbdqGvczhWWYmNWrzw1ayAMYe83E9
         CU8Q==
X-Gm-Message-State: AFuF++k0jA2A8UdLuT1LvaY9GXJiEjTyoB1RrkC4A0pz2bD1wbNfNJXH
	KAktA89ErV2pw1+OLHGihTkJFsTEsxzYk5r/4xZGbet7ObQ41B/vnxA5bzWHgZ56+5ZV5ciaDBh
	XVJdipS++8DzGQdL6pFM8DGpVQ70QpY1PXEoH5q4AY5j+PHpuh2Ni35tLMxuOuF3tfkV6pCTLWn
	EX9ygkxXS6Wp3LtXDmRC/RP+TpHPeKordg95SHwowE
X-Gm-Gg: AR+sD12SaWORMwZcCrbK5j9rR+tvS6s3RkTRGNoGAYtiSFXQVjMVd1kU0h4sjH1nisE
	RNaEiuGsLFMt9WhxELPSpxqSjpn5CuXcq+rgEPBfbiFAv/6eOTMyWMdFHJAALrRuyfKzBVspSNO
	O82Ch7XfZ2cnxz0WFUXlfWG6SslBqrOhAM5wlWPw1m6bqJ4eNE+S8CRtNHAL3/cMjevjB/DbEWR
	VmYXlK26k5eBT/9HFkBC+7wnpzUQTw8Yb3J4D0QRNjXXRWWMfHkS2hV7cOI4/kDK9eRPgxLQHni
	AgsEozn9HGzc19cYJq/xqRtVmz48WbU6w1YI2CLXhfT3i8SFAj8FCgYTtIXz53DijkKMHTZyHX8
	80uwQ+a1iwKBckfpOTKPGKguRD79qmJI=
X-Received: by 2002:a05:600c:1991:b0:495:5d6d:9cc1 with SMTP id 5b1f17b1804b1-499dc4f5bd1mr2956715e9.0.1787675487987;
        Tue, 25 Aug 2026 09:31:27 -0700 (PDT)
X-Received: by 2002:a05:600c:1991:b0:495:5d6d:9cc1 with SMTP id 5b1f17b1804b1-499dc4f5bd1mr2956245e9.0.1787675487302;
        Tue, 25 Aug 2026 09:31:27 -0700 (PDT)
Received: from digraph.polyomino.org.uk (digraph.polyomino.org.uk. [2001:8b0:bf73:93f7::51bb:e332])
        by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499dc98f299sm16955e9.14.2026.08.25.09.31.26
        for <sc22wg14@open-std.org>
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Tue, 25 Aug 2026 09:31:26 -0700 (PDT)
Received: from jsm28 (helo=localhost)
	by digraph.polyomino.org.uk with local-esmtp (Exim 4.98.2)
	(envelope-from <josmyers@redhat.com>)
	id 1wyu3Z-00000006X7Q-3Wa9
	for sc22wg14@open-std.org;
	Tue, 25 Aug 2026 16:31:25 +0000
Date: Tue, 25 Aug 2026 16:31:25 +0000 (UTC)
From: Joseph Myers <josmyers@redhat.com>
To: sc22wg14@open-std.org
Subject: Revised integer promotions wording (issue 1021)
Message-ID: <4e8249e7-8f7c-2b58-92a7-74bd4b068bbf@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-MFC-PROC-ID: cOFyZr1_jMW9ksBujl6i5FhJsrj9upZtipgCpUmMGyc_1787675488
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=US-ASCII
Sender: owner-sc22wg14@open-std.org
Precedence: bulk

Here is a revision of my proposed wording for issue 1021 (Integer 
promotions for enumerations) (in Markdown).

In C23 6.3.2.1, change the wording about integer promotions:

> <del>The following can be used in an expression wherever an `int` or
> `unsigned int` can be used:</del>
> 
> * <del>An object or expression with an integer type (other than
>   `int` or `unsigned int`) whose integer conversion rank is less
>   than or equal to the rank of `int` and `unsigned int`.</del>
> 
> * <del>A bit-field of type `bool`, `int`, `signed int`, or `unsigned
>   int`.</del>
> 
> <del>The value from a bit-field of a bit-precise integer type is
> converted to the corresponding bit-precise integer type.  If the
> original type is not a bit-precise integer type (6.2.5): if an `int`
> can represent all values of the original type (as restricted by the
> width, for a bit-field), the value is converted to an
> `int`;<sup>50)</sup> otherwise, it is converted to an `unsigned
> int`. These are called the *integer promotions*. All other types are
> unchanged by the integer promotions.</del>

to:

> <ins>The *integer promotions* are the following sequence of
> conversions, applied to operands of expressions where specified in
> their respective subclauses.  Each conversion is applied in turn if
> and only if the type resulting from the previous conversions
> satisfies the given conditions.</ins>
> 
> * <ins>If the operand has enumerated type, it is converted to the
>   underlying type of the enumeration.</ins>
> 
> * <ins>If the operand after the previous conversion is a bit-field
>   of a bit-precise integer type (6.2.5), it is converted to the
>   corresponding bit-precise integer
>   type.</ins><sup><ins>50)</ins></sup>
> 
> * <ins>If the type resulting from the previous conversions is a
>   bit-precise integer type, no further conversions are applied as
>   part of the integer promotions.</ins>
> 
> * <ins>If the operand after the previous conversions:</ins>
> 
>   * <ins>has an integer type (other than `int` or `unsigned int`)
>     whose integer conversion rank is less than or equal to the rank
>     of `int` and `unsigned int`; or</ins>
> 
>   * <ins>is a bit-field of type `bool`, `int`, `signed int`, or
>     `unsigned int`</ins>
> 
>   <ins>then:</ins>
> 
>   * <ins>if an `int` can represent all values of the original type
>     (as restricted by the width, for a bit-field), the value is
>     converted to an `int`;</ins>
> 
>   * <ins>otherwise, it is converted to an `unsigned int`.</ins>
> 
> <ins>All other types are unchanged by the integer promotions.</ins>

Keep the existing footnote (number 50 in C23), moved to the new
location indicated, and the existing NOTE following the replaced text.
For C2y, where the option for plain `int` bit-fields to be implicitly
unsigned has been removed, `signed int` should be removed from the
list of bit-field types above.

In C23 6.3.2.8 (Usual arithmetic conversion), change:

> <del>Otherwise, if any of the two types is an enumeration, it is
> converted to its underlying type.  Then, the</del> <ins>The</ins>
> integer promotions are performed on both operands.

-- 
Joseph S. Myers
josmyers@redhat.com

