[cfe-commits] r138704 - in /cfe/trunk: include/clang/Basic/IdentifierTable.h include/clang/Lex/Preprocessor.h lib/Lex/Preprocessor.cpp test/Modules/lookup.cpp
Argyrios Kyrtzidis
kyrtzidis at apple.com
Tue Sep 6 10:59:04 PDT 2011
On Aug 26, 2011, at 11:37 PM, Douglas Gregor wrote:
> Author: dgregor
> Date: Sat Aug 27 01:37:51 2011
> New Revision: 138704
>
> URL: http://llvm.org/viewvc/llvm-project?rev=138704&view=rev
> Log:
> Take an entirely different approach to handling the "parsing" of
> __import__ within the preprocessor, since the prior one foolishly
> assumed that Preprocessor::Lex() was re-entrant. We now handle
> __import__ at the top level (only), after macro expansion. This should
> fix the buildbot failures.
>
[...]
> /// Lex - To lex a token from the preprocessor, just pull a token from the
> /// current lexer or macro object.
> void Lex(Token &Result) {
> + ++LexDepth;
> if (CurLexer)
> CurLexer->Lex(Result);
> else if (CurPTHLexer)
> @@ -539,6 +543,11 @@
> CurTokenLexer->Lex(Result);
> else
> CachingLex(Result);
> + --LexDepth;
> +
> + // If we have the __import__ keyword, handle the module import now.
> + if (Result.getKind() == tok::kw___import__ && LexDepth == 0)
> + HandleModuleImport(Result);
> }
Lex() is one of those super hot methods, is it possible to avoid this modification ? I get about -5.5% for -Eonly of Cocoa.h if I remove the additions in Lex().
-Argyrios
More information about the cfe-commits
mailing list