[llvm-branch-commits] [cfe-branch] r119640 - /cfe/branches/Apple/whitney/tools/libclang/CIndex.cpp

Daniel Dunbar daniel at zuster.org
Wed Nov 17 18:37:09 PST 2010


Author: ddunbar
Date: Wed Nov 17 20:37:09 2010
New Revision: 119640

URL: http://llvm.org/viewvc/llvm-project?rev=119640&view=rev
Log:
Merge r118964:
--
Author: Ted Kremenek <kremenek at apple.com>
Date:   Sat Nov 13 01:09:29 2010 +0000

    CursorVisitor: Migrate BlockExpr, CXXTemporaryOBjectExpr, and ObjCEncodeExpr to data-recursive algorithm.

Modified:
    cfe/branches/Apple/whitney/tools/libclang/CIndex.cpp

Modified: cfe/branches/Apple/whitney/tools/libclang/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/Apple/whitney/tools/libclang/CIndex.cpp?rev=119640&r1=119639&r2=119640&view=diff
==============================================================================
--- cfe/branches/Apple/whitney/tools/libclang/CIndex.cpp (original)
+++ cfe/branches/Apple/whitney/tools/libclang/CIndex.cpp Wed Nov 17 20:37:09 2010
@@ -326,8 +326,6 @@
   bool VisitStmt(Stmt *S);
 
   // Expression visitors
-  bool VisitBlockExpr(BlockExpr *B);
-  bool VisitObjCEncodeExpr(ObjCEncodeExpr *E);
   bool VisitOffsetOfExpr(OffsetOfExpr *E);
   bool VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E);
   bool VisitAddrLabelExpr(AddrLabelExpr *E);
@@ -337,7 +335,6 @@
   bool VisitCXXTypeidExpr(CXXTypeidExpr *E);
   bool VisitCXXUuidofExpr(CXXUuidofExpr *E);
   bool VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { return false; }
-  bool VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E);
   bool VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E);
   bool VisitCXXNewExpr(CXXNewExpr *E);
   bool VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E);
@@ -349,9 +346,11 @@
 #define DATA_RECURSIVE_VISIT(NAME)\
 bool Visit##NAME(NAME *S) { return VisitDataRecursive(S); }
   DATA_RECURSIVE_VISIT(BinaryOperator)
+  DATA_RECURSIVE_VISIT(BlockExpr)
   DATA_RECURSIVE_VISIT(CompoundLiteralExpr)
   DATA_RECURSIVE_VISIT(CXXMemberCallExpr)
   DATA_RECURSIVE_VISIT(CXXOperatorCallExpr)
+  DATA_RECURSIVE_VISIT(CXXTemporaryObjectExpr)
   DATA_RECURSIVE_VISIT(DeclRefExpr)
   DATA_RECURSIVE_VISIT(DeclStmt)
   DATA_RECURSIVE_VISIT(ExplicitCastExpr)
@@ -361,6 +360,7 @@
   DATA_RECURSIVE_VISIT(ForStmt)
   DATA_RECURSIVE_VISIT(GotoStmt)
   DATA_RECURSIVE_VISIT(MemberExpr)
+  DATA_RECURSIVE_VISIT(ObjCEncodeExpr)
   DATA_RECURSIVE_VISIT(ObjCMessageExpr)
   DATA_RECURSIVE_VISIT(OverloadExpr)
   DATA_RECURSIVE_VISIT(SwitchStmt)
@@ -1466,11 +1466,6 @@
   return VisitTagDecl(D);
 }
 
-
-bool CursorVisitor::VisitBlockExpr(BlockExpr *B) {
-  return Visit(B->getBlockDecl());
-}
-
 bool CursorVisitor::VisitOffsetOfExpr(OffsetOfExpr *E) {
   // Visit the type into which we're computing an offset.
   if (Visit(E->getTypeSourceInfo()->getTypeLoc()))
@@ -1582,14 +1577,6 @@
   return VisitExpr(E);  
 }
 
-bool CursorVisitor::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E) {
-  if (TypeSourceInfo *TSInfo = E->getTypeSourceInfo())
-    if (Visit(TSInfo->getTypeLoc()))
-      return true;
-  
-  return VisitExpr(E);
-}
-
 bool CursorVisitor::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E) {
   if (TypeSourceInfo *TSInfo = E->getTypeSourceInfo())
     return Visit(TSInfo->getTypeLoc());
@@ -1712,11 +1699,6 @@
   return false;
 }
 
-bool CursorVisitor::VisitObjCEncodeExpr(ObjCEncodeExpr *E) {
-  return Visit(E->getEncodedTypeSourceInfo()->getTypeLoc());
-}
-
-
 bool CursorVisitor::VisitAttributes(Decl *D) {
   for (AttrVec::const_iterator i = D->attr_begin(), e = D->attr_end();
        i != e; ++i)
@@ -1780,8 +1762,10 @@
   EnqueueVisitor(VisitorWorkList &wl, CXCursor parent)
     : WL(wl), Parent(parent) {}
 
+  void VisitBlockExpr(BlockExpr *B);
   void VisitCompoundLiteralExpr(CompoundLiteralExpr *E);
   void VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E);
+  void VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E);
   void VisitDeclRefExpr(DeclRefExpr *D);
   void VisitDeclStmt(DeclStmt *S);
   void VisitExplicitCastExpr(ExplicitCastExpr *E);
@@ -1789,6 +1773,7 @@
   void VisitIfStmt(IfStmt *If);
   void VisitInitListExpr(InitListExpr *IE);
   void VisitMemberExpr(MemberExpr *M);
+  void VisitObjCEncodeExpr(ObjCEncodeExpr *E);
   void VisitObjCMessageExpr(ObjCMessageExpr *M);
   void VisitOverloadExpr(OverloadExpr *E);
   void VisitStmt(Stmt *S);
@@ -1829,6 +1814,9 @@
   VisitorWorkList::iterator I = WL.begin() + size, E = WL.end();
   std::reverse(I, E);
 }
+void EnqueueVisitor::VisitBlockExpr(BlockExpr *B) {
+  AddDecl(B->getBlockDecl());
+}
 void EnqueueVisitor::VisitCompoundLiteralExpr(CompoundLiteralExpr *E) {
   EnqueueChildren(E);
   AddTypeLoc(E->getTypeSourceInfo());
@@ -1841,6 +1829,10 @@
   AddStmt(CE->getCallee());
   AddStmt(CE->getArg(0));
 }
+void EnqueueVisitor::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E) {
+  EnqueueChildren(E);
+  AddTypeLoc(E->getTypeSourceInfo());
+}
 void EnqueueVisitor::VisitDeclRefExpr(DeclRefExpr *DR) {
   WL.push_back(DeclRefExprParts(DR, Parent));
 }
@@ -1886,6 +1878,9 @@
   WL.push_back(MemberExprParts(M, Parent));
   AddStmt(M->getBase());
 }
+void EnqueueVisitor::VisitObjCEncodeExpr(ObjCEncodeExpr *E) {
+  AddTypeLoc(E->getEncodedTypeSourceInfo());
+}
 void EnqueueVisitor::VisitObjCMessageExpr(ObjCMessageExpr *M) {
   EnqueueChildren(M);
   AddTypeLoc(M->getClassReceiverTypeInfo());
@@ -1980,18 +1975,21 @@
             // Fall-through.
           }
           case Stmt::BinaryOperatorClass:
+          case Stmt::BlockExprClass:
           case Stmt::CallExprClass:
           case Stmt::CaseStmtClass:
           case Stmt::CompoundLiteralExprClass:
           case Stmt::CompoundStmtClass:
           case Stmt::CXXMemberCallExprClass:
           case Stmt::CXXOperatorCallExprClass:
+          case Stmt::CXXTemporaryObjectExprClass:
           case Stmt::DefaultStmtClass:
           case Stmt::DoStmtClass:
           case Stmt::ForStmtClass:
           case Stmt::IfStmtClass:
           case Stmt::InitListExprClass:
           case Stmt::MemberExprClass:
+          case Stmt::ObjCEncodeExprClass:
           case Stmt::ObjCMessageExprClass:
           case Stmt::ParenExprClass:
           case Stmt::SwitchStmtClass:





More information about the llvm-branch-commits mailing list