diff options
-rw-r--r-- | include/clang/Lex/Lexer.h | 3 | ||||
-rw-r--r-- | lib/Lex/Lexer.cpp | 12 | ||||
-rw-r--r-- | lib/Lex/TokenLexer.cpp | 8 |
3 files changed, 8 insertions, 15 deletions
diff --git a/include/clang/Lex/Lexer.h b/include/clang/Lex/Lexer.h index 182832a8f6..bed77b667d 100644 --- a/include/clang/Lex/Lexer.h +++ b/include/clang/Lex/Lexer.h @@ -84,8 +84,7 @@ public: /// suitable for calls to 'LexRawToken'. This lexer assumes that the text /// range will outlive it, so it doesn't take ownership of it. Lexer(SourceLocation FileLoc, const LangOptions &Features, - const char *BufStart, const char *BufEnd, - const llvm::MemoryBuffer *FromFile = 0); + const char *BufStart, const char *BufPtr, const char *BufEnd); /// Lexer constructor - Create a new raw lexer object. This object is only /// suitable for calls to 'LexRawToken'. This lexer assumes that the text diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp index 704c4db661..c5b36fce61 100644 --- a/lib/Lex/Lexer.cpp +++ b/lib/Lex/Lexer.cpp @@ -124,15 +124,9 @@ Lexer::Lexer(SourceLocation fileloc, Preprocessor &PP, /// suitable for calls to 'LexRawToken'. This lexer assumes that the text /// range will outlive it, so it doesn't take ownership of it. Lexer::Lexer(SourceLocation fileloc, const LangOptions &features, - const char *BufPtr, const char *BufEnd, - const llvm::MemoryBuffer *FromFile) + const char *BufStart, const char *BufPtr, const char *BufEnd) : FileLoc(fileloc), Features(features) { - // If a MemoryBuffer was specified, use its start as BufferStart. This affects - // the source location objects produced by this lexer. - const char *BufStart = BufPtr; - if (FromFile) BufStart = FromFile->getBufferStart(); - InitLexer(BufStart, BufPtr, BufEnd); // We *are* in raw mode. @@ -197,7 +191,7 @@ unsigned Lexer::MeasureTokenLength(SourceLocation Loc, // all obviously single-char tokens. This could use // Lexer::isObviouslySimpleCharacter for example to handle identifiers or // something. - const char *BufEnd = SM.getBufferData(Loc).second; + std::pair<const char *,const char *> Buffer = SM.getBufferData(Loc); // Create a langops struct and enable trigraphs. This is sufficient for // measuring tokens. @@ -205,7 +199,7 @@ unsigned Lexer::MeasureTokenLength(SourceLocation Loc, LangOpts.Trigraphs = true; // Create a lexer starting at the beginning of this token. - Lexer TheLexer(Loc, LangOpts, StrData, BufEnd); + Lexer TheLexer(Loc, LangOpts, Buffer.first, StrData, Buffer.second); Token TheTok; TheLexer.LexFromRawLexer(TheTok); return TheTok.getLength(); diff --git a/lib/Lex/TokenLexer.cpp b/lib/Lex/TokenLexer.cpp index fde29359fd..7e56a43c44 100644 --- a/lib/Lex/TokenLexer.cpp +++ b/lib/Lex/TokenLexer.cpp @@ -392,11 +392,11 @@ bool TokenLexer::PasteTokens(Token &Tok) { SourceManager &SourceMgr = PP.getSourceManager(); const char *ResultStrData = SourceMgr.getCharacterData(ResultTokLoc); - const llvm::MemoryBuffer *Buffer = SourceMgr.getBuffer(ResultTokLoc); - // Make a lexer object so that we lex and expand the paste result. - Lexer TL(ResultTokLoc, PP.getLangOptions(), ResultStrData, - ResultStrData+LHSLen+RHSLen /*don't include null*/, Buffer); + Lexer TL(ResultTokLoc, PP.getLangOptions(), + SourceMgr.getBufferData(ResultTokLoc).first, + ResultStrData, + ResultStrData+LHSLen+RHSLen /*don't include null*/); // Lex a token in raw mode. This way it won't look up identifiers // automatically, lexing off the end will return an eof token, and |