Permit the "if" literal suffix with Microsoft extensions enabled.
Differential Revision: http://reviews.llvm.org/D3963 llvm-svn: 209859
This commit is contained in:
parent
b367c25f28
commit
efe09b4c65
|
@ -606,16 +606,18 @@ NumericLiteralParser::NumericLiteralParser(StringRef TokSpelling,
|
|||
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,6 +632,7 @@ NumericLiteralParser::NumericLiteralParser(StringRef TokSpelling,
|
|||
}
|
||||
break;
|
||||
case '3':
|
||||
if (isFPConstant) break;
|
||||
if (s + 2 == ThisTokEnd) break;
|
||||
if (s[2] == '2') {
|
||||
s += 3; // i32 suffix
|
||||
|
@ -638,6 +641,7 @@ NumericLiteralParser::NumericLiteralParser(StringRef TokSpelling,
|
|||
}
|
||||
break;
|
||||
case '6':
|
||||
if (isFPConstant) break;
|
||||
if (s + 2 == ThisTokEnd) break;
|
||||
if (s[2] == '4') {
|
||||
s += 3; // i64 suffix
|
||||
|
@ -648,7 +652,8 @@ NumericLiteralParser::NumericLiteralParser(StringRef TokSpelling,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
if (isMicrosoftInteger)
|
||||
break;
|
||||
}
|
||||
}
|
||||
// "i", "if", and "il" are user-defined suffixes in C++1y.
|
||||
|
|
|
@ -13,6 +13,10 @@ __int64 w = 0x43ui64;
|
|||
__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
|
||||
|
|
Loading…
Reference in New Issue