On Feb 27, 2010, at 9:53 AM, Chris Lattner wrote: > > On Feb 27, 2010, at 6:22 AM, Benjamin Kramer wrote: > >> Author: d0k >> Date: Sat Feb 27 08:22:08 2010 >> New Revision: 97324 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=97324&view=rev >> Log: >> Simplify code. > > We actually don't want this. This code is highly performance sensitive in > the -E path.
Let me put this a different way: the cleanup is awesome, and much much better :). Unfortunately despite that, I think the verbose code should stay. Your other patches are really great though! -Chris > > -Chris > >> >> Modified: >> cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp >> >> Modified: cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp?rev=97324&r1=97323&r2=97324&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp (original) >> +++ cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp Sat Feb 27 08:22:08 >> 2010 >> @@ -390,7 +390,7 @@ >> static void PrintPreprocessedTokens(Preprocessor &PP, Token &Tok, >> PrintPPOutputPPCallbacks *Callbacks, >> llvm::raw_ostream &OS) { >> - char Buffer[256]; >> + llvm::SmallString<256> Buffer; >> Token PrevTok; >> while (1) { >> >> @@ -406,29 +406,13 @@ >> OS << ' '; >> } >> >> - if (IdentifierInfo *II = Tok.getIdentifierInfo()) { >> - OS << II->getName(); >> - } 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); >> - OS.write(TokPtr, Len); >> - >> - // Tokens that can contain embedded newlines need to adjust our >> current >> - // line number. >> - if (Tok.getKind() == tok::comment) >> - Callbacks->HandleNewlinesInToken(TokPtr, Len); >> - } else { >> - std::string S = PP.getSpelling(Tok); >> - OS.write(&S[0], S.size()); >> - >> - // Tokens that can contain embedded newlines need to adjust our >> current >> - // line number. >> - if (Tok.getKind() == tok::comment) >> - Callbacks->HandleNewlinesInToken(&S[0], S.size()); >> - } >> + llvm::StringRef Str = PP.getSpelling(Tok, Buffer); >> + OS << Str; >> + // Tokens that can contain embedded newlines need to adjust our current >> + // line number. >> + if (Tok.getKind() == tok::comment) >> + Callbacks->HandleNewlinesInToken(Str.data(), Str.size()); >> + >> Callbacks->SetEmittedTokensOnThisLine(); >> >> if (Tok.is(tok::eof)) break; >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
