]> granicus.if.org Git - clang/commitdiff
Update CFGStmtVisitor to recognize that ObjCForCollectionStmts are special block...
authorTed Kremenek <kremenek@apple.com>
Wed, 12 Nov 2008 21:58:46 +0000 (21:58 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 12 Nov 2008 21:58:46 +0000 (21:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59176 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/Visitors/CFGStmtVisitor.h
lib/Analysis/LiveVariables.cpp
lib/Analysis/UninitializedValues.cpp

index 5c3b2839449a89061d5049b8d7a31a6d4f52f3da..f42bbde8f1489a2a14ef4aebabbd3466ec1e7155 100644 (file)
@@ -68,7 +68,8 @@ public:
 
       DISPATCH_CASE(StmtExpr)
       DISPATCH_CASE(ConditionalOperator)
-
+      DISPATCH_CASE(ObjCForCollectionStmt)
+        
       case Stmt::BinaryOperatorClass: {
         BinaryOperator* B = cast<BinaryOperator>(S);
         if (B->isLogicalOp())
@@ -90,6 +91,10 @@ public:
   DEFAULT_BLOCKSTMT_VISIT(StmtExpr)
   DEFAULT_BLOCKSTMT_VISIT(ConditionalOperator)
   
+  RetTy BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt* S) {
+    return static_cast<ImplClass*>(this)->BlockStmt_VisitStmt(S);
+  }
+  
   RetTy BlockStmt_VisitImplicitControlFlowExpr(Expr* E) {
     return static_cast<ImplClass*>(this)->BlockStmt_VisitExpr(E);
   }
index 9bbbf55d6ee9a936e7f68fe18b406d7de6fa8239..4432ac0a53eed6611b48f9d0e0ee975519dc1ab9 100644 (file)
@@ -121,7 +121,7 @@ public:
   void VisitBinaryOperator(BinaryOperator* B);
   void VisitAssign(BinaryOperator* B);
   void VisitDeclStmt(DeclStmt* DS);
-  void VisitObjCForCollectionStmt(ObjCForCollectionStmt* S);
+  void BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt* S);
   void VisitUnaryOperator(UnaryOperator* U);
   void Visit(Stmt *S);    
   void VisitTerminator(CFGBlock* B); 
@@ -176,7 +176,9 @@ void TransferFuncs::VisitBinaryOperator(BinaryOperator* B) {
   else VisitStmt(B);
 }
 
-void TransferFuncs::VisitObjCForCollectionStmt(ObjCForCollectionStmt* S) {  
+void
+TransferFuncs::BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt* S) {
+  
   // This represents a 'use' of the collection.
   Visit(S->getCollection());
   
index 3a84b2861acc66ac9a7328fdfc79f63a5aed1c3f..0e4a387620d4c691fb2997eed49d03b56ab3f4da 100644 (file)
@@ -75,7 +75,7 @@ public:
   bool VisitCallExpr(CallExpr* C);
   bool VisitDeclStmt(DeclStmt* D);
   bool VisitConditionalOperator(ConditionalOperator* C);
-  bool VisitObjCForCollectionStmt(ObjCForCollectionStmt* S);
+  bool BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt* S);
   
   bool Visit(Stmt *S);
   bool BlockStmt_VisitExpr(Expr* E);
@@ -180,7 +180,8 @@ bool TransferFuncs::VisitUnaryOperator(UnaryOperator* U) {
   return Visit(U->getSubExpr());
 }
   
-bool TransferFuncs::VisitObjCForCollectionStmt(ObjCForCollectionStmt* S) {
+bool
+TransferFuncs::BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt* S) {
   // This represents a use of the 'collection'
   bool x = Visit(S->getCollection());