public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@efficios.com>
To: gdb-patches@sourceware.org
Cc: Luis Machado <luis.machado@arm.com>,
	John Baldwin <jhb@freebsd.org>,
	Andrew Burgess <aburgess@redhat.com>,
	Simon Marchi <simon.marchi@efficios.com>,
	John Baldwin <jhb@FreeBSD.org>
Subject: [PATCH v2 04/24] gdb: simplify conditions in regcache::{read,write,raw_collect,raw_supply}_part
Date: Fri, 24 Nov 2023 16:26:21 -0500	[thread overview]
Message-ID: <20231124212656.96801-5-simon.marchi@efficios.com> (raw)
In-Reply-To: <20231124212656.96801-1-simon.marchi@efficios.com>

Make a few simplifications in these functions.

1. When checking if we need to do nothing, if the length is 0, we don't
   need to do anything, regardless of the value of offset.  Remove the
   offset check.

2. When check if transferring the whole register, if the length is equal
   to the register size, then we transfer the whole register, no need to
   check the offset.  Remove the offset check.

3. In the gdb_asserts, it is unnecessary to check for:

     offset <= reg_size

   given that right after we check for:

     len >= 0 && offset + len <= reg_size

   If `offset + len` is <= reg_size and len is >= 0, then necessarily
   offset is <= reg_size.  Remove the `offset <= reg_size` check.

Change-Id: I30a73acdc7bf432c45a07f5f177224d1cdc298e8
Reviewed-By: John Baldwin <jhb@FreeBSD.org>
---
 gdb/regcache.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/gdb/regcache.c b/gdb/regcache.c
index 7f1f07694d8a..abea211627c4 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -873,16 +873,16 @@ readable_regcache::read_part (int regnum, int offset, int len,
   int reg_size = register_size (arch (), regnum);
 
   gdb_assert (out != NULL);
-  gdb_assert (offset >= 0 && offset <= reg_size);
+  gdb_assert (offset >= 0);
   gdb_assert (len >= 0 && offset + len <= reg_size);
 
-  if (offset == 0 && len == 0)
+  if (len == 0)
     {
       /* Nothing to do.  */
       return REG_VALID;
     }
 
-  if (offset == 0 && len == reg_size)
+  if (len == reg_size)
     {
       /* Read the full register.  */
       return (is_raw) ? raw_read (regnum, out) : cooked_read (regnum, out);
@@ -910,16 +910,16 @@ reg_buffer::raw_collect_part (int regnum, int offset, int len,
   int reg_size = register_size (arch (), regnum);
 
   gdb_assert (out != nullptr);
-  gdb_assert (offset >= 0 && offset <= reg_size);
+  gdb_assert (offset >= 0);
   gdb_assert (len >= 0 && offset + len <= reg_size);
 
-  if (offset == 0 && len == 0)
+  if (len == 0)
     {
       /* Nothing to do.  */
       return;
     }
 
-  if (offset == 0 && len == reg_size)
+  if (len == reg_size)
     {
       /* Collect the full register.  */
       return raw_collect (regnum, out);
@@ -940,16 +940,16 @@ regcache::write_part (int regnum, int offset, int len,
   int reg_size = register_size (arch (), regnum);
 
   gdb_assert (in != NULL);
-  gdb_assert (offset >= 0 && offset <= reg_size);
+  gdb_assert (offset >= 0);
   gdb_assert (len >= 0 && offset + len <= reg_size);
 
-  if (offset == 0 && len == 0)
+  if (len == 0)
     {
       /* Nothing to do.  */
       return REG_VALID;
     }
 
-  if (offset == 0 && len == reg_size)
+  if (len == reg_size)
     {
       /* Write the full register.  */
       (is_raw) ? raw_write (regnum, in) : cooked_write (regnum, in);
@@ -979,16 +979,16 @@ reg_buffer::raw_supply_part (int regnum, int offset, int len,
   int reg_size = register_size (arch (), regnum);
 
   gdb_assert (in != nullptr);
-  gdb_assert (offset >= 0 && offset <= reg_size);
+  gdb_assert (offset >= 0);
   gdb_assert (len >= 0 && offset + len <= reg_size);
 
-  if (offset == 0 && len == 0)
+  if (len == 0)
     {
       /* Nothing to do.  */
       return;
     }
 
-  if (offset == 0 && len == reg_size)
+  if (len == reg_size)
     {
       /* Supply the full register.  */
       return raw_supply (regnum, in);
-- 
2.43.0


  parent reply	other threads:[~2023-11-24 21:27 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-24 21:26 [PATCH v2 00/24] Fix reading and writing pseudo registers in non-current frames Simon Marchi
2023-11-24 21:26 ` [PATCH v2 01/24] gdb: don't handle i386 k registers as pseudo registers Simon Marchi
2023-11-24 21:26 ` [PATCH v2 02/24] gdb: use reg_buffer_common throughout gdbsupport/common-regcache.h Simon Marchi
2023-11-30 11:45   ` Aktemur, Tankut Baris
2023-11-30 21:02     ` Simon Marchi
2023-11-30 16:11   ` Aktemur, Tankut Baris
2023-11-30 18:01     ` Simon Marchi
2023-11-24 21:26 ` [PATCH v2 03/24] gdb: make store_integer take an array_view Simon Marchi
2023-11-30 11:40   ` Aktemur, Tankut Baris
2023-11-30 17:51     ` Simon Marchi
2023-11-24 21:26 ` Simon Marchi [this message]
2023-11-24 21:26 ` [PATCH v2 05/24] gdb: change regcache interface to use array_view Simon Marchi
2023-11-30 17:58   ` Aktemur, Tankut Baris
2023-11-30 20:09     ` Simon Marchi
2023-11-24 21:26 ` [PATCH v2 06/24] gdb: fix bugs in {get,put}_frame_register_bytes Simon Marchi
2023-11-24 21:26 ` [PATCH v2 07/24] gdb: make put_frame_register take an array_view Simon Marchi
2023-11-24 21:26 ` [PATCH v2 08/24] gdb: change value_of_register and value_of_register_lazy to take the next frame Simon Marchi
2023-11-24 21:26 ` [PATCH v2 09/24] gdb: remove frame_register Simon Marchi
2023-11-24 21:26 ` [PATCH v2 10/24] gdb: make put_frame_register take the next frame Simon Marchi
2023-11-24 21:26 ` [PATCH v2 11/24] gdb: make put_frame_register_bytes " Simon Marchi
2023-11-24 21:26 ` [PATCH v2 12/24] gdb: make get_frame_register_bytes " Simon Marchi
2023-11-24 21:26 ` [PATCH v2 13/24] gdb: add value::allocate_register Simon Marchi
2023-11-24 21:26 ` [PATCH v2 14/24] gdb: read pseudo register through frame Simon Marchi
2023-11-24 21:26 ` [PATCH v2 15/24] gdb: change parameter name in frame_unwind_register_unsigned declaration Simon Marchi
2023-11-24 21:26 ` [PATCH v2 16/24] gdb: rename gdbarch_pseudo_register_write to gdbarch_deprecated_pseudo_register_write Simon Marchi
2023-11-24 21:26 ` [PATCH v2 17/24] gdb: add gdbarch_pseudo_register_write that takes a frame Simon Marchi
2023-11-24 21:26 ` [PATCH v2 18/24] gdb: migrate i386 and amd64 to the new gdbarch_pseudo_register_write Simon Marchi
2023-11-24 21:26 ` [PATCH v2 19/24] gdb: make aarch64_za_offsets_from_regnum return za_offsets Simon Marchi
2023-11-27 11:42   ` Luis Machado
2023-11-27 15:56     ` Simon Marchi
2023-11-24 21:26 ` [PATCH v2 20/24] gdb: add missing raw register read in aarch64_sme_pseudo_register_write Simon Marchi
2023-11-27 11:43   ` Luis Machado
2023-11-27 15:57     ` Simon Marchi
2023-11-24 21:26 ` [PATCH v2 21/24] gdb: migrate aarch64 to new gdbarch_pseudo_register_write Simon Marchi
2023-11-28 12:35   ` Luis Machado
2023-11-24 21:26 ` [PATCH v2 22/24] gdb: migrate arm to gdbarch_pseudo_register_read_value Simon Marchi
2023-11-27 16:42   ` Luis Machado
2023-11-24 21:26 ` [PATCH v2 23/24] gdb: migrate arm to new gdbarch_pseudo_register_write Simon Marchi
2023-11-27 16:42   ` Luis Machado
2023-11-24 21:26 ` [PATCH v2 24/24] gdb/testsuite: add tests for unwinding of pseudo registers Simon Marchi
2023-11-27 11:53   ` Luis Machado
2023-11-27 15:59     ` Simon Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231124212656.96801-5-simon.marchi@efficios.com \
    --to=simon.marchi@efficios.com \
    --cc=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jhb@freebsd.org \
    --cc=luis.machado@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).