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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits