diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-02-12 03:26:59 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-02-12 03:26:59 +0000 |
commit | 337edcdbec05316b407d0d64865c88ff8597d910 (patch) | |
tree | c2f9615730330f1f26813c2ffec4a116915802b4 /lib/Lex/Preprocessor.cpp | |
parent | 96438f319bb07d9a40564b5e01333f82c0c8a61e (diff) |
PTH: Cache stat information for files in the PTH file. Hook up FileManager
to use this stat information in the PTH file using a 'StatSysCallCache' object.
Performance impact (Cocoa.h, PTH):
- number of stat calls reduces from 1230 to 425
- fsyntax-only: time improves by 4.2%
We can reduce the number of stat calls to almost zero by caching negative stat
calls and directory stat calls in the PTH file as well.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64353 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Lex/Preprocessor.cpp')
-rw-r--r-- | lib/Lex/Preprocessor.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index db5ca2bd7f..69aa7cb51a 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -32,6 +32,7 @@ #include "clang/Lex/ScratchBuffer.h" #include "clang/Lex/LexDiagnostic.h" #include "clang/Basic/SourceManager.h" +#include "clang/Basic/FileManager.h" #include "clang/Basic/TargetInfo.h" #include "llvm/ADT/APFloat.h" #include "llvm/ADT/SmallVector.h" @@ -117,6 +118,11 @@ Preprocessor::~Preprocessor() { delete Callbacks; } +void Preprocessor::setPTHManager(PTHManager* pm) { + PTH.reset(pm); + FileMgr.setStatCache(PTH->createStatCache()); +} + void Preprocessor::DumpToken(const Token &Tok, bool DumpFlags) const { llvm::cerr << tok::getTokenName(Tok.getKind()) << " '" << getSpelling(Tok) << "'"; |