summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-01-16 19:47:19 +0000
committerTed Kremenek <kremenek@apple.com>2008-01-16 19:47:19 +0000
commit88d5909bedc14ab0bfc25aadeef2816c99a7abcd (patch)
tree3a3ddaafae4a4935cabfdff7dc88789e1bdd4908
parent47b62c1a5fe78c50ddb645fd53dc6eb306643d0d (diff)
downloadbcm5719-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.cpp8
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())
OpenPOWER on IntegriCloud