From: Ted Kremenek Date: Wed, 5 Mar 2008 05:05:04 +0000 (+0000) Subject: Reverted patch 47926 for ProgramPoint.h because it is currently buggy. May add back... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ea45bb2d3b5e445029ad8f42d88bc1ed5b483a0b;p=clang Reverted patch 47926 for ProgramPoint.h because it is currently buggy. May add back (fixed) later. 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 --- diff --git a/include/clang/Analysis/ProgramPoint.h b/include/clang/Analysis/ProgramPoint.h index 6d182d9a24..a046268cfd 100644 --- a/include/clang/Analysis/ProgramPoint.h +++ b/include/clang/Analysis/ProgramPoint.h @@ -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(Data & ~0x7); } void* getRawData() const { return reinterpret_cast(Data); } static bool classof(const ProgramPoint*) { return true; } @@ -66,27 +53,6 @@ public: ID.AddPointer(getRawPtr()); } }; - -class ExplodedNodeImpl; -template class ExplodedNode; - -class LayeredNode : public ProgramPoint { -public: - LayeredNode(ExplodedNodeImpl* N) : ProgramPoint(N, LayeredNodeKind) { - assert (reinterpret_cast(N) & 0x3 == 0 && - "Address of ExplodedNode must have 4-byte alignment."); - } - - ExplodedNodeImpl* getNodeImpl() const { - return (ExplodedNodeImpl*) getRawPtr(); - } - - template - ExplodedNode* getNode() const { - return (ExplodedNode*) getRawPtr(); - } - -}; class BlockEntrance : public ProgramPoint { public: diff --git a/include/clang/Analysis/Visitors/CFGStmtVisitor.h b/include/clang/Analysis/Visitors/CFGStmtVisitor.h index 3d55b9d416..5cc8bc57e0 100644 --- a/include/clang/Analysis/Visitors/CFGStmtVisitor.h +++ b/include/clang/Analysis/Visitors/CFGStmtVisitor.h @@ -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)