only order comparisons are removed in py3k #6119
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index f510d93..eb05303 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -21,6 +21,9 @@
     def assertWarning(self, _, warning, expected_message):
         self.assertEqual(str(warning.message), expected_message)
 
+    def assertNoWarning(self, _, recorder):
+        self.assertEqual(len(recorder.warnings), 0)
+
     def test_backquote(self):
         expected = 'backquote not supported in 3.x; use repr()'
         with check_warnings() as w:
@@ -113,7 +116,7 @@
 
     def test_builtin_function_or_method_comparisons(self):
         expected = ('builtin_function_or_method '
-                    'inequality comparisons not supported in 3.x')
+                    'order comparisons not supported in 3.x')
         func = eval
         meth = {}.get
         with check_warnings() as w:
@@ -124,6 +127,12 @@
             self.assertWarning(meth <= func, w, expected)
             w.reset()
             self.assertWarning(meth >= func, w, expected)
+            w.reset()
+            self.assertNoWarning(meth == func, w)
+            self.assertNoWarning(meth != func, w)
+            lam = lambda x: x
+            self.assertNoWarning(lam == func, w)
+            self.assertNoWarning(lam != func, w)
 
     def test_frame_attributes(self):
         template = "%s has been removed in 3.x"
diff --git a/Misc/NEWS b/Misc/NEWS
index 03cf45c..b5c716a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue #6119: Fixed a incorrect Py3k warning about order comparisons of builtin
+  functions and methods.
+
 - Issue #6347: Include inttypes.h as well as stdint.h in pyport.h.
   This fixes a build failure on HP-UX: int32_t and uint32_t are
   defined in inttypes.h instead of stdint.h on that platform.
diff --git a/Objects/methodobject.c b/Objects/methodobject.c
index 737a3f7..69d7791 100644
--- a/Objects/methodobject.c
+++ b/Objects/methodobject.c
@@ -230,12 +230,9 @@
 	PyObject *res;
 	int eq;
 
-	if ((op != Py_EQ && op != Py_NE) ||
-	    !PyCFunction_Check(self) ||
-	    !PyCFunction_Check(other))
-	{
-		/* Py3K warning if types are not equal and comparison isn't == or !=  */
-		if (PyErr_WarnPy3k("builtin_function_or_method inequality "
+	if (op != Py_EQ && op != Py_NE) {
+		/* Py3K warning if comparison isn't == or !=.  */
+		if (PyErr_WarnPy3k("builtin_function_or_method order "
 				   "comparisons not supported in 3.x", 1) < 0) {
 			return NULL;
 		}
@@ -243,6 +240,10 @@
 		Py_INCREF(Py_NotImplemented);
 		return Py_NotImplemented;
 	}
+	else if (!PyCFunction_Check(self) || !PyCFunction_Check(other)) {
+		Py_INCREF(Py_NotImplemented);
+		return Py_NotImplemented;
+	}
 	a = (PyCFunctionObject *)self;
 	b = (PyCFunctionObject *)other;
 	eq = a->m_self == b->m_self;