diff --git a/include/llvm/Analysis/DataStructure.h b/include/llvm/Analysis/DataStructure.h
index 674a5f0a1ed..b008b6e6a72 100644
--- a/include/llvm/Analysis/DataStructure.h
+++ b/include/llvm/Analysis/DataStructure.h
@@ -49,9 +49,15 @@ public:
   bool operator!=(const DSNodeHandle &H) const { return N != H.N; }
   bool operator==(const DSNode *Node) const { return N == Node; }
   bool operator!=(const DSNode *Node) const { return N != Node; }
+  bool operator==(DSNode *Node) const { return N == Node; }
+  bool operator!=(DSNode *Node) const { return N != Node; }
 
   // Avoid having comparisons to null cause errors...
-  bool operator==(int X) const { return operator==((DSNode*)X); }
+  bool operator==(int X) const {
+    assert(X == 0 && "Bad comparison!");
+    return operator==((DSNode*)0);
+  }
+  bool operator!=(int X) const { return !operator==(X); }
 
   // Allow explicit conversion to DSNode...
   DSNode *get() { return N; }
diff --git a/include/llvm/Analysis/DataStructure/DataStructure.h b/include/llvm/Analysis/DataStructure/DataStructure.h
index 674a5f0a1ed..b008b6e6a72 100644
--- a/include/llvm/Analysis/DataStructure/DataStructure.h
+++ b/include/llvm/Analysis/DataStructure/DataStructure.h
@@ -49,9 +49,15 @@ public:
   bool operator!=(const DSNodeHandle &H) const { return N != H.N; }
   bool operator==(const DSNode *Node) const { return N == Node; }
   bool operator!=(const DSNode *Node) const { return N != Node; }
+  bool operator==(DSNode *Node) const { return N == Node; }
+  bool operator!=(DSNode *Node) const { return N != Node; }
 
   // Avoid having comparisons to null cause errors...
-  bool operator==(int X) const { return operator==((DSNode*)X); }
+  bool operator==(int X) const {
+    assert(X == 0 && "Bad comparison!");
+    return operator==((DSNode*)0);
+  }
+  bool operator!=(int X) const { return !operator==(X); }
 
   // Allow explicit conversion to DSNode...
   DSNode *get() { return N; }