]> granicus.if.org Git - clang/commitdiff
Add skeleton for handling various cfg dtors.
authorZhongxing Xu <xuzhongxing@gmail.com>
Wed, 17 Nov 2010 09:16:19 +0000 (09:16 +0000)
committerZhongxing Xu <xuzhongxing@gmail.com>
Wed, 17 Nov 2010 09:16:19 +0000 (09:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119491 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Checker/PathSensitive/GRExprEngine.h
lib/Checker/GRExprEngine.cpp

index 80c53107b5fb01dd866e20e496a88e9247fcb85a..f9082f421488f9f921669ac0e2e4294ff54da841 100644 (file)
@@ -185,6 +185,13 @@ public:
 
   void ProcessImplicitDtor(const CFGImplicitDtor D, GRStmtNodeBuilder &builder);
 
+  void ProcessAutomaticObjDtor(const CFGAutomaticObjDtor D, 
+                            GRStmtNodeBuilder &builder);
+  void ProcessBaseDtor(const CFGBaseDtor D, GRStmtNodeBuilder &builder);
+  void ProcessMemberDtor(const CFGMemberDtor D, GRStmtNodeBuilder &builder);
+  void ProcessTemporaryDtor(const CFGTemporaryDtor D, 
+                            GRStmtNodeBuilder &builder);
+
   /// ProcessBlockEntrance - Called by GRCoreEngine when start processing
   ///  a CFGBlock.  This method returns true if the analysis should continue
   ///  exploring the given path, and false otherwise.
index acb67d63dc97b30a60c130b3eb4a5a6bbb0d95e8..2dcb354f00ba287af07c31c92d3b470fee648768 100644 (file)
@@ -718,6 +718,38 @@ void GRExprEngine::ProcessInitializer(const CFGInitializer Init,
 
 void GRExprEngine::ProcessImplicitDtor(const CFGImplicitDtor D,
                                        GRStmtNodeBuilder &builder) {
+  switch (D.getDtorKind()) {
+  case CFGElement::AutomaticObjectDtor:
+    ProcessAutomaticObjDtor(cast<CFGAutomaticObjDtor>(D), builder);
+    break;
+  case CFGElement::BaseDtor:
+    ProcessBaseDtor(cast<CFGBaseDtor>(D), builder);
+    break;
+  case CFGElement::MemberDtor:
+    ProcessMemberDtor(cast<CFGMemberDtor>(D), builder);
+    break;
+  case CFGElement::TemporaryDtor:
+    ProcessTemporaryDtor(cast<CFGTemporaryDtor>(D), builder);
+    break;
+  default:
+    llvm_unreachable("Unexpected dtor kind.");
+  }
+}
+
+void GRExprEngine::ProcessAutomaticObjDtor(const CFGAutomaticObjDtor D,
+                                           GRStmtNodeBuilder &builder) {
+}
+
+void GRExprEngine::ProcessBaseDtor(const CFGBaseDtor D,
+                                   GRStmtNodeBuilder &builder) {
+}
+
+void GRExprEngine::ProcessMemberDtor(const CFGMemberDtor D,
+                                     GRStmtNodeBuilder &builder) {
+}
+
+void GRExprEngine::ProcessTemporaryDtor(const CFGTemporaryDtor D,
+                                        GRStmtNodeBuilder &builder) {
 }
 
 void GRExprEngine::Visit(const Stmt* S, ExplodedNode* Pred,