[1/2] Change register_changed_p returns bool

Message ID 1509699364-16049-1-git-send-email-yao.qi@linaro.org
State New, archived
Headers

Commit Message

Yao Qi Nov. 3, 2017, 8:56 a.m. UTC
  register_changed_p actually returns bool, but return type is still int.
This patch changes the return type to bool.  The caller of
register_changed_p also checked whether the return value can be negative,
which is not needed now.  Such check was added in fb40c2090 in 2000,
at that moment, register_changed_p returns -1 when
read_relative_register_raw_bytes fails.  I can tell from its name that
it reads register contents, but we don't have this function called inside
register_changed_p, and the regcache is read-only.

gdb:

2017-11-01  Yao Qi  <yao.qi@linaro.org>

	* mi/mi-main.c (mi_cmd_data_list_changed_registers): Remove
	local 'changed'.  Remove error.
	(register_changed_p): Change return type to bool.
---
 gdb/mi/mi-main.c | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)
  

Comments

Yao Qi Nov. 24, 2017, 10:49 a.m. UTC | #1
Yao Qi <qiyaoltc@gmail.com> writes:

> 2017-11-01  Yao Qi  <yao.qi@linaro.org>
>
> 	* mi/mi-main.c (mi_cmd_data_list_changed_registers): Remove
> 	local 'changed'.  Remove error.
> 	(register_changed_p): Change return type to bool.

I pushed patch 1/2 and 2/2 in.
  

Patch

diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 480d2fd..42df94e 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -95,8 +95,8 @@  static void mi_execute_cli_command (const char *cmd, int args_p,
 				    const char *args);
 static void mi_execute_async_cli_command (const char *cli_command,
 					  char **argv, int argc);
-static int register_changed_p (int regnum, struct regcache *,
-			       struct regcache *);
+static bool register_changed_p (int regnum, regcache *,
+				regcache *);
 static void output_register (struct frame_info *, int regnum, int format,
 			     int skip_unavailable);
 
@@ -988,7 +988,7 @@  mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc)
   struct ui_out *uiout = current_uiout;
   std::unique_ptr<struct regcache> prev_regs;
   struct gdbarch *gdbarch;
-  int regnum, numregs, changed;
+  int regnum, numregs;
   int i;
 
   /* The last time we visited this function, the current frame's
@@ -1021,12 +1021,9 @@  mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc)
 	  if (gdbarch_register_name (gdbarch, regnum) == NULL
 	      || *(gdbarch_register_name (gdbarch, regnum)) == '\0')
 	    continue;
-	  changed = register_changed_p (regnum, prev_regs.get (),
-					this_regs.get ());
-	  if (changed < 0)
-	    error (_("-data-list-changed-registers: "
-		     "Unable to read register contents."));
-	  else if (changed)
+
+	  if (register_changed_p (regnum, prev_regs.get (),
+				  this_regs.get ()))
 	    uiout->field_int (NULL, regnum);
 	}
     }
@@ -1041,12 +1038,8 @@  mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc)
 	  && gdbarch_register_name (gdbarch, regnum) != NULL
 	  && *gdbarch_register_name (gdbarch, regnum) != '\000')
 	{
-	  changed = register_changed_p (regnum, prev_regs.get (),
-					this_regs.get ());
-	  if (changed < 0)
-	    error (_("-data-list-changed-registers: "
-		     "Unable to read register contents."));
-	  else if (changed)
+	  if (register_changed_p (regnum, prev_regs.get (),
+				  this_regs.get ()))
 	    uiout->field_int (NULL, regnum);
 	}
       else
@@ -1054,18 +1047,17 @@  mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc)
     }
 }
 
-static int
+static bool
 register_changed_p (int regnum, struct regcache *prev_regs,
 		    struct regcache *this_regs)
 {
   struct gdbarch *gdbarch = this_regs->arch ();
   struct value *prev_value, *this_value;
-  int ret;
 
   /* First time through or after gdbarch change consider all registers
      as changed.  */
   if (!prev_regs || prev_regs->arch () != gdbarch)
-    return 1;
+    return true;
 
   /* Get register contents and compare.  */
   prev_value = prev_regs->cooked_read_value (regnum);
@@ -1073,8 +1065,8 @@  register_changed_p (int regnum, struct regcache *prev_regs,
   gdb_assert (prev_value != NULL);
   gdb_assert (this_value != NULL);
 
-  ret = value_contents_eq (prev_value, 0, this_value, 0,
-			   register_size (gdbarch, regnum)) == 0;
+  auto ret = value_contents_eq (prev_value, 0, this_value, 0,
+				register_size (gdbarch, regnum)) == 0;
 
   release_value (prev_value);
   release_value (this_value);