Refactored code for transfer functions for binary operators involving two LValues.

Fixed bug in transfer functions for sizeof(*); we were incorrectly evaluating to
a value of the wrong type.

Fixed bug in transfer functions for compound assignments where we did not properly
handle assignments involving dereferences of symbolic values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47190 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Analysis/GRSimpleVals.h b/Analysis/GRSimpleVals.h
index b00dd3c..34b1d4f 100644
--- a/Analysis/GRSimpleVals.h
+++ b/Analysis/GRSimpleVals.h
@@ -44,14 +44,19 @@
                                  BinaryOperator::Opcode Op,
                                  NonLValue LHS, NonLValue RHS);
   
+  virtual RValue EvalBinaryOp(ValueManager& ValMgr,
+                              BinaryOperator::Opcode Op,
+                              LValue LHS, LValue RHS);
+  
   // Pointer arithmetic.
   
   virtual LValue EvalBinaryOp(ValueManager& ValMgr, BinaryOperator::Opcode Op,
                               LValue LHS, NonLValue RHS);  
   
+protected:
   // Equality operators for LValues.
-  virtual NonLValue EvalEQ(ValueManager& ValMgr, LValue LHS, LValue RHS);
-  virtual NonLValue EvalNE(ValueManager& ValMgr, LValue LHS, LValue RHS);
+  NonLValue EvalEQ(ValueManager& ValMgr, LValue LHS, LValue RHS);
+  NonLValue EvalNE(ValueManager& ValMgr, LValue LHS, LValue RHS);
 };