[PATCH] Permit the "if" literal suffix with Microsoft extensions enabled.
Peter Collingbourne
peter at pcc.me.uk
Thu May 29 16:18:02 PDT 2014
Closed by commit rL209859 (authored by @pcc).
http://reviews.llvm.org/D3963
Files:
cfe/trunk/lib/Lex/LiteralSupport.cpp
cfe/trunk/test/Lexer/ms-extensions.c
Index: cfe/trunk/test/Lexer/ms-extensions.c
===================================================================
--- cfe/trunk/test/Lexer/ms-extensions.c
+++ cfe/trunk/test/Lexer/ms-extensions.c
@@ -13,6 +13,10 @@
__int64 z = 9Li64; // expected-error {{invalid suffix}}
__int64 q = 10lli64; // expected-error {{invalid suffix}}
+__complex double c1 = 1i;
+__complex double c2 = 1.0i;
+__complex float c3 = 1.0if;
+
// radar 7562363
#define ULLONG_MAX 0xffffffffffffffffui64
#define UINT 0xffffffffui32
Index: cfe/trunk/lib/Lex/LiteralSupport.cpp
===================================================================
--- cfe/trunk/lib/Lex/LiteralSupport.cpp
+++ cfe/trunk/lib/Lex/LiteralSupport.cpp
@@ -606,16 +606,18 @@
case 'i':
case 'I':
if (PP.getLangOpts().MicrosoftExt) {
- if (isFPConstant || isLong || isLongLong) break;
+ if (isLong || isLongLong) break;
// Allow i8, i16, i32, i64, and i128.
if (s + 1 != ThisTokEnd) {
switch (s[1]) {
case '8':
+ if (isFPConstant) break;
s += 2; // i8 suffix
isMicrosoftInteger = true;
break;
case '1':
+ if (isFPConstant) break;
if (s + 2 == ThisTokEnd) break;
if (s[2] == '6') {
s += 3; // i16 suffix
@@ -630,14 +632,16 @@
}
break;
case '3':
+ if (isFPConstant) break;
if (s + 2 == ThisTokEnd) break;
if (s[2] == '2') {
s += 3; // i32 suffix
isLong = true;
isMicrosoftInteger = true;
}
break;
case '6':
+ if (isFPConstant) break;
if (s + 2 == ThisTokEnd) break;
if (s[2] == '4') {
s += 3; // i64 suffix
@@ -648,7 +652,8 @@
default:
break;
}
- break;
+ if (isMicrosoftInteger)
+ break;
}
}
// "i", "if", and "il" are user-defined suffixes in C++1y.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3963.9938.patch
Type: text/x-patch
Size: 2136 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140529/2af69852/attachment.bin>
More information about the cfe-commits
mailing list