ilya-biryukov marked 2 inline comments as done.
ilya-biryukov added a comment.

I'll try to explore bringing the overhead down.
The fact that `CachingLex` is happening at `LexLevel==1` might help, thanks for 
pointing that out!



================
Comment at: clang/lib/Lex/PPCaching.cpp:64
   ExitCachingLexMode();
-  Lex(Result);
+  Lex(Result, Report);
 
----------------
rsmith wrote:
> This change seems redundant: `LexLevel` is always `1` here, so this token 
> would never be reported anyway. And with that gone I think you can remove the 
> `Report` parameter entirely.
It is reported by the caller of `CachingLex` (the one that has `LexLevel == 0`) 
and it needs to know where the reported token comes from.


================
Comment at: clang/lib/Lex/Preprocessor.cpp:892
   do {
     switch (CurLexerKind) {
     case CLK_Lexer:
----------------
rsmith wrote:
> Doesn't this always set `Report` to the same value as `IsNewToken`? (The only 
> case we set `Report` to `false` is when we call `CachingLex` and it sets 
> `IsNewToken` to `false`, and `CachingLex` can't be recursively called twice, 
> so its recursive call to `Lex` can't set `Report` to `false`..)
We can have `IsNewToken = true && Report = false` when the recursive call to 
`Lex()` inside `CachingLex()` sets `Report = CurTokenLexer->isMacroExpansion()`.
This happens when we call `CachingLex` and the resulting token comes from a 
token stream for out-of-order parsing.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D59885/new/

https://reviews.llvm.org/D59885



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to