mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
[MC] Fix ICE with non-newline terminated input
There is an explicit option for the lexer to support this, but we crash when `-preserve-comments` is enabled because it checks for `getTok().getString().empty()` to detect the case. This doesn't work currently because the lexer reports this case as a string of length 1, containing a null byte. Change the lexer to instead report this case via an empty string, as the null terminator isn't logically a part of the textual input, and the check for `.empty()` seems natural and obvious in the calling code. Reviewed By: niravd Differential Revision: https://reviews.llvm.org/D92681
This commit is contained in:
parent
89ea615411
commit
6218f09b03
@ -715,7 +715,7 @@ AsmToken AsmLexer::LexToken() {
|
|||||||
if (CurChar == EOF && !IsAtStartOfStatement && EndStatementAtEOF) {
|
if (CurChar == EOF && !IsAtStartOfStatement && EndStatementAtEOF) {
|
||||||
IsAtStartOfLine = true;
|
IsAtStartOfLine = true;
|
||||||
IsAtStartOfStatement = true;
|
IsAtStartOfStatement = true;
|
||||||
return AsmToken(AsmToken::EndOfStatement, StringRef(TokStart, 1));
|
return AsmToken(AsmToken::EndOfStatement, StringRef(TokStart, 0));
|
||||||
}
|
}
|
||||||
IsAtStartOfLine = false;
|
IsAtStartOfLine = false;
|
||||||
bool OldIsAtStartOfStatement = IsAtStartOfStatement;
|
bool OldIsAtStartOfStatement = IsAtStartOfStatement;
|
||||||
|
1
test/MC/AsmParser/Inputs/no-newline-at-end-of-file.s
Normal file
1
test/MC/AsmParser/Inputs/no-newline-at-end-of-file.s
Normal file
@ -0,0 +1 @@
|
|||||||
|
.text
|
@ -1,5 +1,6 @@
|
|||||||
#RUN: llvm-mc -preserve-comments -n -triple i386-linux-gnu < %s > %t
|
#RUN: llvm-mc -preserve-comments -n -triple i386-linux-gnu < %s > %t
|
||||||
#RUN: diff -b %s %t
|
#RUN: diff -b %s %t
|
||||||
|
#RUN: llvm-mc -preserve-comments -n -triple i386-linux-gnu < %p/Inputs/no-newline-at-end-of-file.s | FileCheck %s
|
||||||
.text
|
.text
|
||||||
|
|
||||||
foo: #Comment here
|
foo: #Comment here
|
||||||
@ -11,3 +12,6 @@ foo: #Comment here
|
|||||||
#endif
|
#endif
|
||||||
.ident "clang version 3.9.0"
|
.ident "clang version 3.9.0"
|
||||||
.section ".note.GNU-stack","",@progbits
|
.section ".note.GNU-stack","",@progbits
|
||||||
|
|
||||||
|
#Confirm we don't crash on inputs without a terminating newline.
|
||||||
|
#CHECK: .text
|
||||||
|
Loading…
Reference in New Issue
Block a user