Disabled operator= for ValueStateImpl.
ValueState no longer inherits FoldingSetNode (not needed).
Removed redundant operator= implementation for ValueState (it simply did the default behavior).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46794 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Analysis/ValueState.h b/Analysis/ValueState.h
index b452979..1067531 100644
--- a/Analysis/ValueState.h
+++ b/Analysis/ValueState.h
@@ -125,7 +125,11 @@
 ///  for a "state" in our symbolic value tracking.  It is intended to be
 ///  used as a functional object; that is once it is created and made
 ///  "persistent" in a FoldingSet its values will never change.
-struct ValueStateImpl : public llvm::FoldingSetNode {
+class ValueStateImpl : public llvm::FoldingSetNode {
+private:
+  void operator=(const ValueStateImpl& R) const;
+
+public:
   vstate::VariableBindingsTy VariableBindings;
   vstate::ConstantNotEqTy    ConstantNotEq;
   vstate::ConstantEqTy       ConstantEq;
@@ -144,6 +148,8 @@
       ConstantNotEq(RHS.ConstantNotEq),
       ConstantEq(RHS.ConstantEq) {} 
   
+
+  
   /// Profile - Profile the contents of a ValueStateImpl object for use
   ///  in a FoldingSet.
   static void Profile(llvm::FoldingSetNodeID& ID, const ValueStateImpl& V) {
@@ -167,12 +173,11 @@
 ///  void* when being handled by GREngine.  It also forces us to unique states;
 ///  consequently, a ValueStateImpl* with a specific address will always refer
 ///  to the unique state with those values.
-class ValueState : public llvm::FoldingSetNode {
+class ValueState {
   ValueStateImpl* Data;
 public:
   ValueState(ValueStateImpl* D) : Data(D) {}
-  ValueState() : Data(0) {}  
-  void operator=(ValueStateImpl* D) { Data = D; }
+  ValueState() : Data(0) {}
   
   // Accessors.  
   ValueStateImpl* getImpl() const { return Data; }