]> granicus.if.org Git - clang/commitdiff
Reverted patch 47926 for ProgramPoint.h because it is currently buggy. May add back...
authorTed Kremenek <kremenek@apple.com>
Wed, 5 Mar 2008 05:05:04 +0000 (05:05 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 5 Mar 2008 05:05:04 +0000 (05:05 +0000)
Updated CFGStmtVisitor to be in accord with rr47913: CallExprs are no longer (automatically) block-level expressions in the CFG.

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

include/clang/Analysis/ProgramPoint.h
include/clang/Analysis/Visitors/CFGStmtVisitor.h

index 6d182d9a2426793d2e52460f961a07e8c004847b..a046268cfd7e8321f27edb09df0c616a85ff8a5b 100644 (file)
@@ -25,13 +25,8 @@ namespace clang {
     
 class ProgramPoint {
 public:
-  enum Kind { LayeredNodeKind  =  0x0,
-              BlockEntranceKind = 0x1,
-              PostStmtKind      = 0x2,
-              BlockExitKind     = 0x3,
-              BlockEdgeSrcKind  = 0x5, // Skip 0x4.
-              BlockEdgeDstKind  = 0x6,
-              BlockEdgeAuxKind  = 0x7 }; 
+  enum Kind { BlockEntranceKind=0, PostStmtKind=1, BlockExitKind=2,
+              BlockEdgeSrcKind=3, BlockEdgeDstKind=4, BlockEdgeAuxKind=5 }; 
 protected:
   uintptr_t Data;
 
@@ -45,16 +40,8 @@ protected:
   ProgramPoint() : Data(0) {}
   
 public:    
-  
-  unsigned getKind() const { 
-    unsigned x = Data & 0x7;
-    return x & 0x3 ? x : 0;  // Use only lower 2 bits for 0x0.
-  }  
-  
-  void* getRawPtr() const {
-    return (void*) (getKind() ? Data & ~0x7 : Data & ~0x3);
-  }
-
+  unsigned getKind() const { return Data & 0x7; }  
+  void* getRawPtr() const { return reinterpret_cast<void*>(Data & ~0x7); }
   void* getRawData() const { return reinterpret_cast<void*>(Data); }
   
   static bool classof(const ProgramPoint*) { return true; }
@@ -66,27 +53,6 @@ public:
     ID.AddPointer(getRawPtr());
   }    
 };
-  
-class ExplodedNodeImpl;
-template <typename StateTy> class ExplodedNode;
-  
-class LayeredNode : public ProgramPoint {
-public:
-  LayeredNode(ExplodedNodeImpl* N) : ProgramPoint(N, LayeredNodeKind) {
-    assert (reinterpret_cast<uintptr_t>(N) & 0x3 == 0 &&
-            "Address of ExplodedNode must have 4-byte alignment.");
-  }
-  
-  ExplodedNodeImpl* getNodeImpl() const {
-    return (ExplodedNodeImpl*) getRawPtr();
-  }
-
-  template <typename StateTy>
-  ExplodedNode<StateTy>* getNode() const {
-    return (ExplodedNode<StateTy>*) getRawPtr();
-  }
-
-};
                
 class BlockEntrance : public ProgramPoint {
 public:
index 3d55b9d4160430f6472acebcb14e2932f46192b2..5cc8bc57e0cfeee4535c84c75f77bdad8718c08d 100644 (file)
@@ -65,7 +65,7 @@ public:
     NullifyStmt cleanup(CurrentBlkStmt);
     
     switch (S->getStmtClass()) {
-      DISPATCH_CASE(CallExpr)
+
       DISPATCH_CASE(StmtExpr)
       DISPATCH_CASE(ConditionalOperator)
 
@@ -87,7 +87,6 @@ public:
     }
   }
 
-  DEFAULT_BLOCKSTMT_VISIT(CallExpr)
   DEFAULT_BLOCKSTMT_VISIT(StmtExpr)
   DEFAULT_BLOCKSTMT_VISIT(ConditionalOperator)