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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user