rjmccall added a comment.

In D80925#2066915 <https://reviews.llvm.org/D80925#2066915>, @ABataev wrote:

> In D80925#2066728 <https://reviews.llvm.org/D80925#2066728>, @rjmccall wrote:
>
> > Narrowly this seems to fix the immediate problem, but I feel like we're in 
> > trouble if tentative parsing is changing the semantic context in ways that 
> > persist.  In particular, I'm concerned that we could end up tentatively 
> > parsing an ODR use as part of an expression and then completely discarding 
> > it, causing Sema to think that there's an ODR use later because it never 
> > sees an L2R conversion (because the expression is not actually used).  
> > Probably the most architectural thing would be for tentative expression 
> > parsing to push a possibly-unevaluated context, and then when we claim an 
> > expression annotation token we can do the retroactive work necessary to 
> > make it an expression in the proper context.  We already have most of the 
> > logic to support that because of C99 `sizeof`, which is usually not 
> > evaluated but can be in the narrow circumstance of a VLA.
> >
> > If we do decide to solve this more narrowly, then we should audit our use 
> > of the tentative-parsing queries to make sure that we're pushing contexts 
> > consistently, and we should leave comments in places like this to make sure 
> > that maintainers understand the subtleties.
>
>
> So, you suggest to not create annot_primary_expr during tentative parsing and 
> revert parsing completely, right?


Not creating the annotation doesn't help if we're still making Sema calls.  
Also, I assume we're making the annotation token intentionally, probably to 
avoid re-doing the lookup.  But I do think we could recognize that we're doing 
this, push an unevaluated context in tentative parsing, and then call 
`TransformToPotentiallyEvaluated` when we see the token in expression parsing.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D80925



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

Reply via email to