ymandel added a comment.

> Those BindingDecls never appear in the CFG unless one of the is used.

Indeed. That''s the issue (which this discussion has helped clarify) -- the 
binding decls are not in the CFG and I was expecting them to be.

> By the time you see this node, the variable has already been created and you 
> can access it using BindingDecl::getHoldingVar(). You want to analyze these 
> BindingDecls when they are used not when you encounter the DecompositionDecl.

Great, that's exactly what this patch does. So, it sounds like we have what we 
need.  Thank you!

Gabor -- now that I understand the issues involved, I think there are two 
options here:

1. When we encounter a `DeclRefExpr` to a `BindingDecl`, just treat that 
DeclRefExpr as the underlying binding expression. So, BindingDecl's are never 
interpreted directly -- we always see through them to their binding expression.
2. (What I have here): When we encounter a `DeclRefExpr` to a `BindingDecl`, 
force the evaluation of the `BindingDecl` and leave the handling of the 
`DeclRefExpr` as is.

Based on this discussion, I'm inclined to go with the first option. Moreover, 
we could use it *for all* `BindingDecl`s, not just tuple-typed decls and 
thereby entirely drop the custom handling of `BindingDecl`s. WDYT?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D139544

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

Reply via email to