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));
 }