summaryrefslogtreecommitdiff
path: root/tools/llvm-mc
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2009-09-16 18:08:00 +0000
committerKevin Enderby <enderby@apple.com>2009-09-16 18:08:00 +0000
commitb5db83084073d74501f3e2a7684d28240a047b92 (patch)
treee3d21cda45c1f0cf25678575362d3630eee25180 /tools/llvm-mc
parent0d6cd00dbe58b456d0d33663e6a36c270aad2b5a (diff)
downloadllvm-b5db83084073d74501f3e2a7684d28240a047b92.tar.gz
llvm-b5db83084073d74501f3e2a7684d28240a047b92.tar.bz2
llvm-b5db83084073d74501f3e2a7684d28240a047b92.tar.xz
Fixed some problems with the logic of parsing line comments by adding
isAtStartOfComment and using that instead in two places where a loop to check if the char was in MAI.getCommentString(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82059 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-mc')
-rw-r--r--tools/llvm-mc/AsmLexer.cpp19
-rw-r--r--tools/llvm-mc/AsmLexer.h3
2 files changed, 13 insertions, 9 deletions
diff --git a/tools/llvm-mc/AsmLexer.cpp b/tools/llvm-mc/AsmLexer.cpp
index 2016f935c5..be8f60d2dd 100644
--- a/tools/llvm-mc/AsmLexer.cpp
+++ b/tools/llvm-mc/AsmLexer.cpp
@@ -232,27 +232,30 @@ AsmToken AsmLexer::LexQuote() {
StringRef AsmLexer::LexUntilEndOfStatement() {
TokStart = CurPtr;
- while (*CurPtr != ';' && // End of statement marker.
+ while (!isAtStartOfComment(*CurPtr) && // Start of line comment.
+ *CurPtr != ';' && // End of statement marker.
*CurPtr != '\n' &&
*CurPtr != '\r' &&
(*CurPtr != 0 || CurPtr != CurBuf->getBufferEnd())) {
- // check for start of line comment.
- for (const char *p = MAI.getCommentString(); *p != 0; ++p)
- if (*CurPtr == *p)
- break;
++CurPtr;
}
return StringRef(TokStart, CurPtr-TokStart);
}
+bool AsmLexer::isAtStartOfComment(char Char) {
+ for (const char *p = MAI.getCommentString(); *p != 0; ++p)
+ if (Char == *p)
+ return true;
+ return false;
+}
+
AsmToken AsmLexer::LexToken() {
TokStart = CurPtr;
// This always consumes at least one character.
int CurChar = getNextChar();
- for (const char *p = MAI.getCommentString(); *p != 0; ++p)
- if (CurChar == *p)
- return LexLineComment();
+ if (isAtStartOfComment(CurChar))
+ return LexLineComment();
switch (CurChar) {
default:
diff --git a/tools/llvm-mc/AsmLexer.h b/tools/llvm-mc/AsmLexer.h
index 32b0c5f5fb..0c2ec13892 100644
--- a/tools/llvm-mc/AsmLexer.h
+++ b/tools/llvm-mc/AsmLexer.h
@@ -55,7 +55,8 @@ public:
SMLoc getLoc() const;
StringRef LexUntilEndOfStatement();
-
+
+ bool isAtStartOfComment(char Char);
/// EnterIncludeFile - Enter the specified file. This returns true on failure.
bool EnterIncludeFile(const std::string &Filename);