From: Chris Lattner Date: Mon, 26 Jan 2009 19:33:54 +0000 (+0000) Subject: minor speedups/cleanups for -E mode. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=33116d6196f8f4ba137e101b16f3c8c624e0b03e;p=clang minor speedups/cleanups for -E mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63029 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/PrintPreprocessedOutput.cpp b/Driver/PrintPreprocessedOutput.cpp index deecacb1f4..32b8a8b279 100644 --- a/Driver/PrintPreprocessedOutput.cpp +++ b/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);