Issue 230529.1: Bit-precise Integer Types
Author: | Jakub Jelinek |
---|---|
Champion: | Jakub Jelinek |
Date submitted: | 2023-05-29 |
Date revised: | |
Date closed: | 2023-11-27 |
Type: | Enhancement |
Status: | Accepted |
DWARF Version: | 6 |
Background
C23 (see draft) is introducing signed and unsigned _BitInt(N)
types.
These can express much larger precision than standard or
even extended integral types, can have different ABI for
argument passing/returning valuess from normal integers.
While I guess one could represent those with
DW_AT_encoding DW_ATE_signed // or DW_ATE_unsigned
DW_AT_bit_size 238
DW_AT_byte_size 32
DW_AT_name "_BitInt(238)"
requiring parsing of the DW_AT_name
and special-casing
_BitInt
used in there for the ABI handling would be awkward.
So, I think it is better to use new DW_ATE_*
values for this.
Proposed Changes
Table 5.1 - add
Bit-precise integer types DW_ATE_signed_bitint bit-precise signed integer DW_ATE_unsigned_bitint bit-precise unsigned integer
Add
5.1.1.7 Bit-precise integer types
Bit-precise integer types (
DW_ATE_signed_bitint
,DW_ATE_unsigned_bitint
) are supported in C23 (_BitInt(N)
andunsigned _BitInt(N)
) and are not discussed further.
Table 7.11 - add
DW_ATE_signed_bitint ‡ 0x17 DW_ATE_unsigned_bitint ‡ 0x18
2023-11-27: Accepted.