[cfe-dev] MS 128-bit literals don't always have the correct type

Dmitri Gribenko gribozavr at gmail.com
Sun Sep 23 09:20:13 PDT 2012


Currently Clang chooses the type of MS 128-bit literals (<digits>i128,
<digits>ui128) based on their value, as if there was no suffix, but
also allows an extended 128-bit type.

For example, on x86_64:

1i128 is equivalent to 1,
0x100000000i128 is same as 0x100000000L,
and finally 0x10000000000000000i128 is indeed a 128-bit literal.

I don't know if it is intended, but i128 is definitely treated
differently way from other MS literal suffixes we accept (for example,
i64 is essentially an alias for LL).

I don't have Visual Studio so I can not check how it handles these literals.

@João: CCing you since it seems like you are interested in MS extensions.


(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/

More information about the cfe-dev mailing list