forked from OSchip/llvm-project
Change the Lexer ctor used in the non _Pragma case to take a FileID instead
of a SourceLocation. This should speed it up and definitely simplifies it. llvm-svn: 62422
This commit is contained in:
parent
8ee1c9f220
commit
c809089b26
|
@ -77,7 +77,7 @@ public:
|
|||
/// with the specified preprocessor managing the lexing process. This lexer
|
||||
/// assumes that the associated file buffer and Preprocessor objects will
|
||||
/// outlive it, so it doesn't take ownership of either of them.
|
||||
Lexer(SourceLocation FileLoc, Preprocessor &PP);
|
||||
Lexer(FileID FID, Preprocessor &PP);
|
||||
Lexer(SourceLocation FileLoc, Preprocessor &PP,
|
||||
const char *BufStart, const char *BufEnd);
|
||||
|
||||
|
|
|
@ -94,17 +94,12 @@ void Lexer::InitLexer(const char *BufStart, const char *BufPtr,
|
|||
/// with the specified preprocessor managing the lexing process. This lexer
|
||||
/// assumes that the associated file buffer and Preprocessor objects will
|
||||
/// outlive it, so it doesn't take ownership of either of them.
|
||||
Lexer::Lexer(SourceLocation fileloc, Preprocessor &PP)
|
||||
// FIXME: This is really horrible and only needed for _Pragma lexers, split this
|
||||
// out of the main lexer path!
|
||||
: PreprocessorLexer(&PP,
|
||||
PP.getSourceManager().getCanonicalFileID(
|
||||
PP.getSourceManager().getSpellingLoc(fileloc))),
|
||||
FileLoc(fileloc),
|
||||
Features(PP.getLangOptions()) {
|
||||
Lexer::Lexer(FileID FID, Preprocessor &PP)
|
||||
: PreprocessorLexer(&PP, FID),
|
||||
FileLoc(PP.getSourceManager().getLocForStartOfFile(FID)),
|
||||
Features(PP.getLangOptions()) {
|
||||
|
||||
SourceManager &SourceMgr = PP.getSourceManager();
|
||||
const llvm::MemoryBuffer *InputFile = SourceMgr.getBuffer(getFileID());
|
||||
const llvm::MemoryBuffer *InputFile = PP.getSourceManager().getBuffer(FID);
|
||||
|
||||
InitLexer(InputFile->getBufferStart(), InputFile->getBufferStart(),
|
||||
InputFile->getBufferEnd());
|
||||
|
@ -124,7 +119,7 @@ Lexer::Lexer(SourceLocation fileloc, Preprocessor &PP,
|
|||
: PreprocessorLexer(&PP,
|
||||
PP.getSourceManager().getCanonicalFileID(
|
||||
PP.getSourceManager().getSpellingLoc(fileloc))),
|
||||
FileLoc(fileloc),
|
||||
FileLoc(fileloc),
|
||||
Features(PP.getLangOptions()) {
|
||||
|
||||
InitLexer(PP.getSourceManager().getBuffer(getFileID())->getBufferStart(),
|
||||
|
|
|
@ -74,16 +74,10 @@ void Preprocessor::EnterSourceFile(FileID FID, const DirectoryLookup *CurDir) {
|
|||
MaxIncludeStackDepth = IncludeMacroStack.size();
|
||||
|
||||
if (PTH) {
|
||||
PTHLexer *PL = PTH->CreateLexer(FID, SourceMgr.getFileEntryForID(FID));
|
||||
|
||||
if (PL) {
|
||||
EnterSourceFileWithPTH(PL, CurDir);
|
||||
return;
|
||||
}
|
||||
if (PTHLexer *PL = PTH->CreateLexer(FID, SourceMgr.getFileEntryForID(FID)))
|
||||
return EnterSourceFileWithPTH(PL, CurDir);
|
||||
}
|
||||
|
||||
Lexer *TheLexer = new Lexer(SourceMgr.getLocForStartOfFile(FID), *this);
|
||||
EnterSourceFileWithLexer(TheLexer, CurDir);
|
||||
EnterSourceFileWithLexer(new Lexer(FID, *this), CurDir);
|
||||
}
|
||||
|
||||
/// EnterSourceFileWithLexer - Add a source file to the top of the include stack
|
||||
|
|
Loading…
Reference in New Issue