Hi all --

This patch attempts to clean up the situation for 128-bit and MS-style integer 
literals, as discussed on cfe-dev back in September ("MS 128-bit literals don't 
always have the correct type").

Here is the brief overview of the intended changes:

        - The MS suffixes i32 and i64 now mean "give me an integer of exactly 
this size" rather than "of at least this size", as indicated by tests performed 
by various people and reported in the September thread.
        - The i128 suffix has been eliminated, as MSVC never actually supported 
it; it seems to have snuck into the clang codebase at some point in the hazy 
past.
        - On targets that support i128 (LP64 targets), literals that are too 
large to fit into [unsigned] long long become [unsigned] i128, as allowed by 
the paragraphs on "extended integer types" in the C and C++ standards.  We 
issue a warning in such cases because clang will differ from GCC.

As fallout from this, a few tests and StmtPrinter have also been updated to 
match, and attribute parsing had to be modified to handle non-int64 literals as 
well.

Thanks for reviewing (and happy American thanksgiving!)
- Steve

Attachment: literal-128.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to