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