[RFA] Avoid -Wduplicated-cond warnings in gdb/python

Message ID 1469130496-15433-1-git-send-email-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey July 21, 2016, 7:48 p.m. UTC
  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-07-21  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.
---
 gdb/ChangeLog         | 7 +++++++
 gdb/python/py-arch.c  | 2 ++
 gdb/python/py-value.c | 2 ++
 3 files changed, 11 insertions(+)
  

Comments

Tom Tromey Sept. 7, 2016, 4:26 p.m. UTC | #1
>>>>> "Tom" == Tom Tromey <tom@tromey.com> writes:

Tom> I tried building gdb with -Wduplicated-cond.  This patch fixes the
Tom> simpler issue that was found.

[...]

Tom> 2016-07-21  Tom Tromey  <tom@tromey.com>

Tom> 	* python/py-value.c (convert_value_from_python): Make PyInt_Check
Tom> 	conditional on Python 2.
Tom> 	* python/py-arch.c (archpy_disassemble): Make PyInt_Check
Tom> 	conditional on Python 2.

Ping.
I realized today that this was never reviewed.

Tom
  
Pedro Alves Sept. 15, 2016, 3:20 p.m. UTC | #2
On 09/07/2016 05:26 PM, Tom Tromey wrote:
>>>>>> "Tom" == Tom Tromey <tom@tromey.com> writes:
> 
> Tom> I tried building gdb with -Wduplicated-cond.  This patch fixes the
> Tom> simpler issue that was found.
> 
> [...]
> 
> Tom> 2016-07-21  Tom Tromey  <tom@tromey.com>
> 
> Tom> 	* python/py-value.c (convert_value_from_python): Make PyInt_Check
> Tom> 	conditional on Python 2.
> Tom> 	* python/py-arch.c (archpy_disassemble): Make PyInt_Check
> Tom> 	conditional on Python 2.
> 
> Ping.
> I realized today that this was never reviewed.

This is OK.  I'd be totally fine with you self approving
this...

Thanks,
Pedro Alves
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 706c34d..3d616aa 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@ 
 2016-07-21  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-07-21  Tom Tromey  <tom@tromey.com>
+
 	* configure: Rebuild.
 	* warning.m4 (AM_GDB_WARNINGS) <build_warnings>: Add
 	-Wunused-but-set-parameter, -Wunused-but-set-variable.
diff --git a/gdb/python/py-arch.c b/gdb/python/py-arch.c
index 0f7d432..4a2dcbf 100644
--- a/gdb/python/py-arch.c
+++ b/gdb/python/py-arch.c
@@ -141,10 +141,12 @@  archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
 	 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);
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 21e9247..b0d3df3 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -1642,6 +1642,7 @@  convert_value_from_python (PyObject *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);
@@ -1649,6 +1650,7 @@  convert_value_from_python (PyObject *obj)
 	  if (! PyErr_Occurred ())
 	    value = value_from_longest (builtin_type_pyint, l);
 	}
+#endif
       else if (PyFloat_Check (obj))
 	{
 	  double d = PyFloat_AsDouble (obj);