diff options
Diffstat (limited to 'clang/lib/Analysis/GRExprEngine.cpp')
| -rw-r--r-- | clang/lib/Analysis/GRExprEngine.cpp | 19 | 
1 files changed, 16 insertions, 3 deletions
| diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp index eb31f84b0c4..dd2bda13314 100644 --- a/clang/lib/Analysis/GRExprEngine.cpp +++ b/clang/lib/Analysis/GRExprEngine.cpp @@ -1855,12 +1855,12 @@ void GRExprEngine::VisitObjCMessageExprArgHelper(ObjCMessageExpr* ME,        Visit(Receiver, Pred, Tmp);        for (NodeSet::iterator NI = Tmp.begin(), NE = Tmp.end(); NI != NE; ++NI) -        VisitObjCMessageExprDispatchHelper(ME, *NI, Dst); +        VisitObjCMessageExprDispatchCheckers(ME, *NI, Dst);        return;      } -    VisitObjCMessageExprDispatchHelper(ME, Pred, Dst); +    VisitObjCMessageExprDispatchCheckers(ME, Pred, Dst);      return;    } @@ -1873,6 +1873,19 @@ void GRExprEngine::VisitObjCMessageExprArgHelper(ObjCMessageExpr* ME,      VisitObjCMessageExprArgHelper(ME, AI, AE, *NI, Dst);  } +void GRExprEngine::VisitObjCMessageExprDispatchCheckers(ObjCMessageExpr* ME, +                                                        NodeTy* Pred, +                                                        NodeSet& Dst) { +  NodeSet Src; +  Src.Add(Pred); +  NodeSet DstTmp; +  // Perform the previsit of the ObjCMessageExpr, storing the results in DstTmp. +  CheckerVisit(ME, Src, DstTmp, true); +   +  for (NodeSet::iterator NI = DstTmp.begin(), NE = DstTmp.end(); NI != NE; ++NI) +    VisitObjCMessageExprDispatchHelper(ME, *NI, Dst); +} +  void GRExprEngine::VisitObjCMessageExprDispatchHelper(ObjCMessageExpr* ME,                                                        NodeTy* Pred,                                                        NodeSet& Dst) { @@ -2043,7 +2056,7 @@ void GRExprEngine::VisitObjCMessageExprDispatchHelper(ObjCMessageExpr* ME,        return;      }        } -   +    // Check if we raise an exception.  For now treat these as sinks.  Eventually    // we will want to handle exceptions properly. | 

