diff options
Diffstat (limited to 'clang/lib/Analysis')
| -rw-r--r-- | clang/lib/Analysis/ExprMutationAnalyzer.cpp | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/clang/lib/Analysis/ExprMutationAnalyzer.cpp b/clang/lib/Analysis/ExprMutationAnalyzer.cpp index 75b17c54..54c30c0 100644 --- a/clang/lib/Analysis/ExprMutationAnalyzer.cpp +++ b/clang/lib/Analysis/ExprMutationAnalyzer.cpp @@ -746,11 +746,14 @@ ExprMutationAnalyzer::Analyzer::findPointeeMemberMutation(const Expr *Exp) {                      Stm, Context));    if (MemberCallExpr)      return MemberCallExpr; -  const auto Matches = -      match(stmt(forEachDescendant( -                memberExpr(hasObjectExpression(canResolveToExprPointee(Exp))) -                    .bind(NodeID<Expr>::value))), -            Stm, Context); +  const auto Matches = match( +      stmt(forEachDescendant( +          expr(anyOf(memberExpr( +                         hasObjectExpression(canResolveToExprPointee(Exp))), +                     binaryOperator(hasOperatorName("->*"), +                                    hasLHS(canResolveToExprPointee(Exp))))) +              .bind(NodeID<Expr>::value))), +      Stm, Context);    return findExprMutation(Matches);  }  | 
