[PATCH] D25475: [analyzer] Add a new SVal to support pointer-to-member operations.
Kirill Romanenkov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 13 04:19:16 PST 2016
kromanenkov added inline comments.
================
Comment at: lib/StaticAnalyzer/Core/ExprEngineC.cpp:899
+ case UO_AddrOf: {
+ // Process pointer-to-member address operation
+ const Expr *Ex = U->getSubExpr()->IgnoreParens();
----------------
dcoughlin wrote:
> Just sticking this in the middle of a fallthrough cascade seems quite brittle. For example, it relies on the sub expression of a unary deref never being a DeclRefExpr to a field. This may be guaranteed by Sema (?) but if so it is quite a non-obvious invariant to rely upon.
>
> I think it would be better the restructure this so that the AddrOf case doesn't fall in the the middle of a fallthrough cascade. You could either factor out the default behavior into a function or use a goto.
It seems that UO_Extension case is the default behavior for this case cascade (just below UO_AddrOf). AFAIU it would be better to explicitly call the default behavior function following by break for each case preceding UO_Extension (UO_Plus,UO_Deref and UO_AddrOf). Or i missed something?
https://reviews.llvm.org/D25475
More information about the cfe-commits
mailing list