diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2010-11-24 08:53:20 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2010-11-24 08:53:20 +0000 |
commit | 19b78d9e3dbbc27bbcbdd8c3017a00fe88849ecd (patch) | |
tree | 313c72a34a82e178a70c3e47e395c0ae564cb99a /include/clang/Checker/PathSensitive | |
parent | 5281b8ed0e395603e5ff15ecc01ee0d0dff2e0fd (diff) |
Use StackFrameContext directly in CallEnter program point. Then we don't need
to remake the stackframe everytime in GRExprEngine::ProcessCallEnter().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Checker/PathSensitive')
-rw-r--r-- | include/clang/Checker/PathSensitive/AnalysisManager.h | 2 | ||||
-rw-r--r-- | include/clang/Checker/PathSensitive/GRCoreEngine.h | 13 |
2 files changed, 8 insertions, 7 deletions
diff --git a/include/clang/Checker/PathSensitive/AnalysisManager.h b/include/clang/Checker/PathSensitive/AnalysisManager.h index fe50699753..79d9903890 100644 --- a/include/clang/Checker/PathSensitive/AnalysisManager.h +++ b/include/clang/Checker/PathSensitive/AnalysisManager.h @@ -154,7 +154,7 @@ public: bool hasIndexer() const { return Idxer != 0; } - const AnalysisContext *getAnalysisContextInAnotherTU(const Decl *D); + AnalysisContext *getAnalysisContextInAnotherTU(const Decl *D); CFG *getCFG(Decl const *D) { return AnaCtxMgr.getContext(D)->getCFG(); diff --git a/include/clang/Checker/PathSensitive/GRCoreEngine.h b/include/clang/Checker/PathSensitive/GRCoreEngine.h index 58c148f66d..8e9f3973b6 100644 --- a/include/clang/Checker/PathSensitive/GRCoreEngine.h +++ b/include/clang/Checker/PathSensitive/GRCoreEngine.h @@ -482,11 +482,12 @@ class GRCallEnterNodeBuilder { const ExplodedNode *Pred; - // The call site. + // The call site. For implicit automatic object dtor, this is the trigger + // statement. const Stmt *CE; - // The AnalysisContext of the callee. - AnalysisContext *CalleeCtx; + // The context of the callee. + const StackFrameContext *CalleeCtx; // The parent block of the CallExpr. const CFGBlock *Block; @@ -496,7 +497,7 @@ class GRCallEnterNodeBuilder { public: GRCallEnterNodeBuilder(GRCoreEngine &eng, const ExplodedNode *pred, - const Stmt *s, AnalysisContext *callee, + const Stmt *s, const StackFrameContext *callee, const CFGBlock *blk, unsigned idx) : Eng(eng), Pred(pred), CE(s), CalleeCtx(callee), Block(blk), Index(idx) {} @@ -508,13 +509,13 @@ public: const Stmt *getCallExpr() const { return CE; } - AnalysisContext *getCalleeContext() const { return CalleeCtx; } + const StackFrameContext *getCalleeContext() const { return CalleeCtx; } const CFGBlock *getBlock() const { return Block; } unsigned getIndex() const { return Index; } - void GenerateNode(const GRState *state, const LocationContext *LocCtx); + void GenerateNode(const GRState *state); }; class GRCallExitNodeBuilder { |