I tried building gdb with -Wduplicated-cond.  This patch fixes the
simpler issue that was found.
In Python 3, "int" and "long" are synonyms, so code like:
      else if (PyLong_Check (obj))
...
      else if (PyInt_Check (obj))
.... will trigger this warning.  The fix is to conditionalize the
PyInt_Check branches on Python 2.
Tested by rebuilding, with both version of Python, on x86-64 Fedora 24.
2016-09-20  Tom Tromey  <tom@tromey.com>
	* python/py-value.c (convert_value_from_python): Make PyInt_Check
	conditional on Python 2.
	* python/py-arch.c (archpy_disassemble): Make PyInt_Check
	conditional on Python 2.
+2016-09-20  Tom Tromey  <tom@tromey.com>
+
+       * python/py-value.c (convert_value_from_python): Make PyInt_Check
+       conditional on Python 2.
+       * python/py-arch.c (archpy_disassemble): Make PyInt_Check
+       conditional on Python 2.
+
 2016-09-20  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>
 
        * rs6000-tdep.c (ppc_process_record_op31): Fix record of Store String
 
         conversion process.  */
       if (PyLong_Check (end_obj))
         end = PyLong_AsUnsignedLongLong (end_obj);
+#if PY_MAJOR_VERSION == 2
       else if (PyInt_Check (end_obj))
         /* If the end_pc value is specified without a trailing 'L', end_obj will
            be an integer and not a long integer.  */
         end = PyInt_AsLong (end_obj);
+#endif
       else
         {
           Py_DECREF (end_obj);
 
          else
            value = value_from_longest (builtin_type_pylong, l);
        }
+#if PY_MAJOR_VERSION == 2
       else if (PyInt_Check (obj))
        {
          long l = PyInt_AsLong (obj);
          if (! PyErr_Occurred ())
            value = value_from_longest (builtin_type_pyint, l);
        }
+#endif
       else if (PyFloat_Check (obj))
        {
          double d = PyFloat_AsDouble (obj);