Added transfer function logic for ReturnStmts.
Fixed insidious bug in handling dereferences.
llvm-svn: 46835
diff --git a/clang/Analysis/ValueState.cpp b/clang/Analysis/ValueState.cpp
index 00b6607..1b08d8e 100644
--- a/clang/Analysis/ValueState.cpp
+++ b/clang/Analysis/ValueState.cpp
@@ -155,6 +155,10 @@
if (DeclRefExpr* DR = dyn_cast<DeclRefExpr>(S))
return lval::DeclVal(DR->getDecl());
+ if (UnaryOperator* U = dyn_cast<UnaryOperator>(S))
+ if (U->getOpcode() == UnaryOperator::Deref)
+ return cast<LValue>(GetValue(St, U->getSubExpr()));
+
return cast<LValue>(GetValue(St, S));
}