diff options
author | Chris Lattner <sabre@nondot.org> | 2009-01-26 19:33:54 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-01-26 19:33:54 +0000 |
commit | 9892ea2fbb47dba59daa21d3cfcf32eb10e99ee9 (patch) | |
tree | 22930c176fd95af432e2c841aa3fd69d33452292 /clang | |
parent | 5a7971e0c31a10959d555b3c321baece799afb73 (diff) | |
download | bcm5719-llvm-9892ea2fbb47dba59daa21d3cfcf32eb10e99ee9.tar.gz bcm5719-llvm-9892ea2fbb47dba59daa21d3cfcf32eb10e99ee9.zip |
minor speedups/cleanups for -E mode.
llvm-svn: 63029
Diffstat (limited to 'clang')
-rw-r--r-- | clang/Driver/PrintPreprocessedOutput.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/clang/Driver/PrintPreprocessedOutput.cpp b/clang/Driver/PrintPreprocessedOutput.cpp index deecacb1f4c..32b8a8b2792 100644 --- a/clang/Driver/PrintPreprocessedOutput.cpp +++ b/clang/Driver/PrintPreprocessedOutput.cpp @@ -430,10 +430,13 @@ bool PrintPPOutputPPCallbacks::AvoidConcat(const Token &PrevTok, // Avoid spelling identifiers, the most common form of token. FirstChar = II->getName()[0]; } else if (!Tok.needsCleaning()) { - // FIXME: SPEED UP LITERALS! - SourceManager &SrcMgr = PP.getSourceManager(); - FirstChar = - *SrcMgr.getCharacterData(SrcMgr.getSpellingLoc(Tok.getLocation())); + if (Tok.isLiteral() && Tok.getLiteralData()) { + FirstChar = *Tok.getLiteralData(); + } else { + SourceManager &SrcMgr = PP.getSourceManager(); + FirstChar = + *SrcMgr.getCharacterData(SrcMgr.getSpellingLoc(Tok.getLocation())); + } } else if (Tok.getLength() < 256) { const char *TokPtr = Buffer; PP.getSpelling(Tok, TokPtr); @@ -554,10 +557,10 @@ void clang::DoPrintPreprocessedInput(Preprocessor &PP, } if (IdentifierInfo *II = Tok.getIdentifierInfo()) { - const char *Str = II->getName(); - unsigned Len = Tok.needsCleaning() ? strlen(Str) : Tok.getLength(); - OS.write(Str, Len); - // FIXME: ACCELERATE LITERALS + OS.write(II->getName(), II->getLength()); + } else if (Tok.isLiteral() && !Tok.needsCleaning() && + Tok.getLiteralData()) { + OS.write(Tok.getLiteralData(), Tok.getLength()); } else if (Tok.getLength() < 256) { const char *TokPtr = Buffer; unsigned Len = PP.getSpelling(Tok, TokPtr); |