Hi,
This patch adds a new diagnostic that checks for member function calls before all base classes in a mem-initializer-list are initialized, which is undefined behavior. (C++03 12.6.2p8; C++11 12.6.2p13.)
The added code looks for member call expressions which use implicit or explicit 'this' inside of the arguments of a base class initializer to signal the warning.
There's multiple visitors in Clang. The RecursiveASTVisitor will visit every AST node, including unevaluated contexts such as sizeof expressions. It would be better to use an EvaluatedExprVisitor which ignores unevaluated expressions. Since there already is an EvaluatedExprVisitor for member initializers, it would be a better idea to try to add to that visitor instead of writing your own to minimize how often these expressions are traversed.
The best place to look is HandleMemberExpr inside UninitializedFieldVisitor. This is were all MemberExpr's that need to be checked are funneled into.