v.g.vassilev added a comment.

In D148997#4561068 <https://reviews.llvm.org/D148997#4561068>, @bnbarham wrote:

> In D148997#4561022 <https://reviews.llvm.org/D148997#4561022>, @v.g.vassilev 
> wrote:
>
>> I meant that I'd like to figure out if we could use the 
>> `annot_repl_input_end` before considering a new flag.
>
> Oh sure, that's why I'm here :). Just trying to figure out what we think the 
> best way forward is.
>
>>> The issue is that all these actions (and the parser checks) can run with 
>>> and without `isIncrementalProcessingEnabled`, so they would need to check 
>>> both `eof` and `annot_repl_input_end`. For some concrete locations (but no 
>>> where near complete):
>>> https://github.com/llvm/llvm-project/blob/df6b35e329ebecad6dc3bfb83183e482eb7a0020/clang/lib/Frontend/FrontendActions.cpp#L82
>>> https://github.com/llvm/llvm-project/blob/df6b35e329ebecad6dc3bfb83183e482eb7a0020/clang/lib/Frontend/FrontendActions.cpp#L955
>>> https://github.com/llvm/llvm-project/blob/df6b35e329ebecad6dc3bfb83183e482eb7a0020/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp#L542
>>
>> These three seem to be useful for `clang-repl` too, so we might want to 
>> extend it with like `!(eof || annot_repl_input_end)`
>
> Sure, though to be clear this isn't all of them, there's also the dump 
> actions too (though not sure that makes sense for `clang-repl`)

The dump actions are also somewhat interesting because in that case we will 
dump the delta that was accumulated and repeat.

and a few in other files (`VerifyDiagnosticConsumer.cpp`, 
`PrintPreprocessedOutput.cpp`).

These ones are also interesting.

>>> https://github.com/llvm/llvm-project/blob/df6b35e329ebecad6dc3bfb83183e482eb7a0020/clang/lib/Parse/ParseExprCXX.cpp#L4070
>>
>> That looks a bit obscure to me. Looks like we are trying to reach some error 
>> recovery anchor but do you happen to have some use case at hand? In 
>> principle we could do the same as for the other 3.
>
> This was just one I picked at random from my grep over the parser. It's 
> unclear how often this would be hit, but I have to assume it (and the other 
> references) can, even if they're obscure/unlikely. My main point is that 
> `!eof` is being used somewhat frequently to end loops, but with this change 
> they will now all never end.

Since `eof` there were several `eof`-like tokens that were added: 
`annot_module_begin`, `annot_module_end`, `tok::annot_module_include` which are 
commonly handled in `isEofOrEom`. We could update these uses with `isEofOrEom` 
but I am pretty sure that @rsmith will point out cases where that's not a good 
very good idea :) We could either experiment with using `isEofOrEom` or have a 
similar utility function only for the two tokens (say `isEoI` -- end of input 
whatever that means).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D148997

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

Reply via email to