diff --git a/include/llvm/Analysis/DSSupport.h b/include/llvm/Analysis/DSSupport.h index 1e886fe7c26..910d1cec7bd 100644 --- a/include/llvm/Analysis/DSSupport.h +++ b/include/llvm/Analysis/DSSupport.h @@ -60,6 +60,7 @@ public: } ~DSNodeHandle() { setNode((DSNode*)0); } DSNodeHandle &operator=(const DSNodeHandle &H) { + if (&H != this) return *this; // Don't set offset to 0 if self assigning. Offset = 0; setNode(H.getNode()); Offset = H.Offset; return *this; } diff --git a/include/llvm/Analysis/DataStructure/DSSupport.h b/include/llvm/Analysis/DataStructure/DSSupport.h index 1e886fe7c26..910d1cec7bd 100644 --- a/include/llvm/Analysis/DataStructure/DSSupport.h +++ b/include/llvm/Analysis/DataStructure/DSSupport.h @@ -60,6 +60,7 @@ public: } ~DSNodeHandle() { setNode((DSNode*)0); } DSNodeHandle &operator=(const DSNodeHandle &H) { + if (&H != this) return *this; // Don't set offset to 0 if self assigning. Offset = 0; setNode(H.getNode()); Offset = H.Offset; return *this; }