]> granicus.if.org Git - clang/commitdiff
Remove from the CFG the half-implemented support for scoping information. We decided...
authorTed Kremenek <kremenek@apple.com>
Mon, 13 Sep 2010 22:25:54 +0000 (22:25 +0000)
committerTed Kremenek <kremenek@apple.com>
Mon, 13 Sep 2010 22:25:54 +0000 (22:25 +0000)
Patch by Marcin Ĺšwiderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113798 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/CFG.h
lib/Analysis/CFG.cpp

index 14ed663307d37b586a5d368dcd0cfeb71a836238..0856c606415fdd3902986d9bfc7cfd34839bf244 100644 (file)
@@ -294,12 +294,6 @@ public:
   
   void appendStmt(Stmt* Statement, BumpVectorContext &C, bool asLValue) {
       Stmts.push_back(CFGElement(Statement, asLValue), C);
-  }  
-  void StartScope(Stmt* S, BumpVectorContext &C) {
-    Stmts.push_back(CFGElement(S, CFGElement::StartScope), C);
-  }
-  void EndScope(Stmt* S, BumpVectorContext &C) {
-    Stmts.push_back(CFGElement(S, CFGElement::EndScope), C);
   }
 };
 
@@ -321,9 +315,7 @@ public:
   ///   constructed CFG belongs to the caller.
   static CFG* buildCFG(const Decl *D, Stmt* AST, ASTContext *C,
                        bool pruneTriviallyFalseEdges = true,
-                       bool AddEHEdges = false,
-                       bool AddScopes = false /* NOT FULLY IMPLEMENTED.
-                                                 NOT READY FOR GENERAL USE. */);
+                       bool AddEHEdges = false);
 
   /// createBlock - Create a new block in the CFG.  The CFG owns the block;
   ///  the caller should not directly free it.
index 804476013efbec3d1b639dd51ce1115407103430..02ff218851989ba8f164f70767800623c923b20d 100644 (file)
@@ -100,8 +100,7 @@ public:
 
   // buildCFG - Used by external clients to construct the CFG.
   CFG* buildCFG(const Decl *D, Stmt *Statement, ASTContext *C,
-                bool pruneTriviallyFalseEdges, bool AddEHEdges,
-                bool AddScopes);
+                bool pruneTriviallyFalseEdges, bool AddEHEdges);
 
 private:
   // Visitors to walk an AST and construct the CFG.
@@ -150,25 +149,6 @@ private:
     return Block;
   }
 
-  CFGBlock *StartScope(Stmt *S, CFGBlock *B) {
-    if (!AddScopes)
-      return B;
-
-    if (B == 0)
-      B = createBlock();
-    B->StartScope(S, cfg->getBumpVectorContext());
-    return B;
-  }
-
-  void EndScope(Stmt *S) {
-    if (!AddScopes)
-      return;
-
-    if (Block == 0)
-      Block = createBlock();
-    Block->EndScope(S, cfg->getBumpVectorContext());
-  }
-
   void autoCreateBlock() { if (!Block) Block = createBlock(); }
   CFGBlock *createBlock(bool add_successor = true);
 
@@ -225,9 +205,6 @@ private:
 
   // True iff EH edges on CallExprs should be added to the CFG.
   bool AddEHEdges;
-
-  // True iff scope start and scope end notes should be added to the CFG.
-  bool AddScopes;
 };
 
 // FIXME: Add support for dependent-sized array types in C++?
@@ -251,7 +228,7 @@ static VariableArrayType* FindVA(Type* t) {
 ///  NULL.
 CFG* CFGBuilder::buildCFG(const Decl *D, Stmt* Statement, ASTContext* C,
                           bool pruneTriviallyFalseEdges,
-                          bool addehedges, bool AddScopes) {
+                          bool addehedges) {
 
   AddEHEdges = addehedges;
   PruneTriviallyFalseEdges = pruneTriviallyFalseEdges;
@@ -261,7 +238,6 @@ CFG* CFGBuilder::buildCFG(const Decl *D, Stmt* Statement, ASTContext* C,
   if (!Statement)
     return NULL;
 
-  this->AddScopes = AddScopes;
   badCFG = false;
 
   // Create an empty block that will serve as the exit block for the CFG.  Since
@@ -690,8 +666,6 @@ CFGBlock *CFGBuilder::VisitChooseExpr(ChooseExpr *C,
 
 
 CFGBlock* CFGBuilder::VisitCompoundStmt(CompoundStmt* C) {
-  EndScope(C);
-
   CFGBlock* LastBlock = Block;
 
   for (CompoundStmt::reverse_body_iterator I=C->body_rbegin(), E=C->body_rend();
@@ -705,8 +679,6 @@ CFGBlock* CFGBuilder::VisitCompoundStmt(CompoundStmt* C) {
       return NULL;
   }
 
-  LastBlock = StartScope(C, LastBlock);
-
   return LastBlock;
 }
 
@@ -1835,10 +1807,10 @@ CFGBlock* CFG::createBlock() {
 ///  CFG is returned to the caller.
 CFG* CFG::buildCFG(const Decl *D, Stmt* Statement, ASTContext *C,
                    bool PruneTriviallyFalse,
-                   bool AddEHEdges, bool AddScopes) {
+                   bool AddEHEdges) {
   CFGBuilder Builder;
   return Builder.buildCFG(D, Statement, C, PruneTriviallyFalse,
-                          AddEHEdges, AddScopes);
+                          AddEHEdges);
 }
 
 //===----------------------------------------------------------------------===//
@@ -2121,16 +2093,6 @@ public:
 
 static void print_stmt(llvm::raw_ostream &OS, StmtPrinterHelper* Helper,
                        const CFGElement &E) {
-
-  if (E.asStartScope()) {
-    OS << "start scope\n";
-    return;
-  }
-  if (E.asEndScope()) {
-    OS << "end scope\n";
-    return;
-  }
-
   Stmt *S = E;
   
   if (Helper) {