diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-01-13 23:19:12 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-01-13 23:19:12 +0000 |
commit | e9814186acadb40f74e5f59adbcf8a3ca4cc22d0 (patch) | |
tree | 59256cc7b1704191a8afdf6da5f5cf514a90af70 /clang/lib/Lex/Preprocessor.cpp | |
parent | 2b136fe2a5c86df3f8b019ab5df7575f5223fdba (diff) | |
download | bcm5719-llvm-e9814186acadb40f74e5f59adbcf8a3ca4cc22d0.tar.gz bcm5719-llvm-e9814186acadb40f74e5f59adbcf8a3ca4cc22d0.zip |
PTH:
- Use canonical FileID when using getSpelling() caching. This
addresses some cache misses we were seeing with -fsyntax-only on
Cocoa.h
- Added Preprocessor::getPhysicalCharacterAt() utility method for
clients to grab the first character at a specified sourcelocation.
This uses the PTH spelling cache.
- Modified Sema::ActOnNumericConstant() to use
Preprocessor::getPhysicalCharacterAt() instead of
SourceManager::getCharacterData() (to get PTH hits).
These changes cause -fsyntax-only to not page in any sources from
Cocoa.h. We see a speedup of 27%.
llvm-svn: 62193
Diffstat (limited to 'clang/lib/Lex/Preprocessor.cpp')
-rw-r--r-- | clang/lib/Lex/Preprocessor.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index a815265e7c9..e09ce1312de 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -199,7 +199,7 @@ std::string Preprocessor::getSpelling(const Token &Tok) const { if (PTH) { SourceLocation sloc = SourceMgr.getPhysicalLoc(Tok.getLocation()); - unsigned fid = sloc.getFileID(); + unsigned fid = SourceMgr.getCanonicalFileID(sloc); unsigned fpos = SourceMgr.getFullFilePos(sloc); if (unsigned len = PTH->getSpelling(fid, fpos, TokStart)) { assert(!Tok.needsCleaning()); @@ -265,7 +265,7 @@ unsigned Preprocessor::getSpelling(const Token &Tok, } else { SourceLocation sloc = SourceMgr.getPhysicalLoc(Tok.getLocation()); - unsigned fid = sloc.getFileID(); + unsigned fid = SourceMgr.getCanonicalFileID(sloc); unsigned fpos = SourceMgr.getFullFilePos(sloc); len = PTH->getSpelling(fid, fpos, Buffer); } |