Skip to content
Snippets Groups Projects
Commit 94a2260a authored by Jim Grosbach's avatar Jim Grosbach
Browse files

AsmParser: More generic support for integer type suffices.

For integer constants, allow 'L', 'UL' as well as 'ULL' and 'LL'. This provides
better support for shared headers between .s and .c files that define bunches
of constant values.

rdar://9321056

llvm-svn: 176118
parent 2d17bbee
No related branches found
No related tags found
No related merge requests found
......@@ -156,10 +156,13 @@ AsmToken AsmLexer::LexLineComment() {
}
static void SkipIgnoredIntegerSuffix(const char *&CurPtr) {
if (CurPtr[0] == 'L' && CurPtr[1] == 'L')
CurPtr += 2;
if (CurPtr[0] == 'U' && CurPtr[1] == 'L' && CurPtr[2] == 'L')
CurPtr += 3;
// Skip ULL, UL, U, L and LL suffices.
if (CurPtr[0] == 'U')
++CurPtr;
if (CurPtr[0] == 'L')
++CurPtr;
if (CurPtr[0] == 'L')
++CurPtr;
}
// Look ahead to search for first non-hex digit, if it's [hH], then we treat the
......@@ -220,8 +223,8 @@ AsmToken AsmLexer::LexDigit() {
if (Radix == 2 || Radix == 16)
++CurPtr;
// The darwin/x86 (and x86-64) assembler accepts and ignores ULL and LL
// suffixes on integer literals.
// The darwin/x86 (and x86-64) assembler accepts and ignores type
// suffices on integer literals.
SkipIgnoredIntegerSuffix(CurPtr);
return AsmToken(AsmToken::Integer, Result, Value);
......
......@@ -63,3 +63,9 @@ TEST7:
# CHECK-NEXT: .byte 2
# CHECK-NEXT: .byte 3
# CHECK-NEXT: .byte 4
TEST8:
.long 0x200000UL+1
.long 0x200000L+1
# CHECK: .long 2097153
# CHECK: .long 2097153
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment