diff options
| author | Ted Kremenek <kremenek@apple.com> | 2008-01-16 19:47:19 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2008-01-16 19:47:19 +0000 |
| commit | 88d5909bedc14ab0bfc25aadeef2816c99a7abcd (patch) | |
| tree | 3a3ddaafae4a4935cabfdff7dc88789e1bdd4908 | |
| parent | 47b62c1a5fe78c50ddb645fd53dc6eb306643d0d (diff) | |
| download | bcm5719-llvm-88d5909bedc14ab0bfc25aadeef2816c99a7abcd.tar.gz bcm5719-llvm-88d5909bedc14ab0bfc25aadeef2816c99a7abcd.zip | |
Added support from retrieving stored values to variables.
llvm-svn: 46087
| -rw-r--r-- | clang/Analysis/GRConstants.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/Analysis/GRConstants.cpp b/clang/Analysis/GRConstants.cpp index 1502fd4fb87..50950ce68b6 100644 --- a/clang/Analysis/GRConstants.cpp +++ b/clang/Analysis/GRConstants.cpp @@ -40,7 +40,7 @@ using llvm::cast; //===----------------------------------------------------------------------===// namespace { class VISIBILITY_HIDDEN DSPtr { - const uintptr_t Raw; + uintptr_t Raw; public: enum VariantKind { IsDecl=0x1, IsBlkLvl=0x2, IsSubExp=0x3, Flags=0x3 }; inline void* getPtr() const { return reinterpret_cast<void*>(Raw & ~Flags); } @@ -218,7 +218,11 @@ void GRConstants::ProcessStmt(Stmt* S, NodeBuilder& builder) { } ExprVariantTy GRConstants::GetBinding(Expr* E) { - DSPtr P(E, getCFG().isBlkExpr(E)); + DSPtr P(NULL); + + if (DeclRefExpr* D = dyn_cast<DeclRefExpr>(E)) P = DSPtr(D->getDecl()); + else P = DSPtr(E, getCFG().isBlkExpr(E)); + StateTy::iterator I = CurrentState.find(P); if (I == CurrentState.end()) |

