From patchwork Fri Dec 1 16:27:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 81135 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3663E385F025 for ; Fri, 1 Dec 2023 16:28:23 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 0AEB1385B534 for ; Fri, 1 Dec 2023 16:27:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0AEB1385B534 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0AEB1385B534 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701448076; cv=none; b=Hs9k8iBB+OXBJ0xHr5JDLeFdNUIFTTLXAVWbJQARxlsiM5ke8OIkS3jWYe+ncIXcbJmxxOPAnDzqKHoWJ4b3eOb2Zd+KK45ciP/UNRS8+lSzmgUM+6/+L5o5ckVq8PtZ1G3Dhn0W16prIFBeCcuSloe5C/STgF7iJ26P/qu8fkk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701448076; c=relaxed/simple; bh=IJw8kRhdL2p+p3yR5meXNLNrmI5LZMPWx/EMtKyJK48=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=A4lmMCL38Scq6LcbfUHPyt/N/4Pdw0Dz/t2WydnlKAKTJqfSrKIWWKsD3Qp8VNs5KOEjaUImGezBSI/eQWaS9/lPShXnVWcoPg5f9La4UqZ90sueMjXYXuUXPzPNaDFJa5eUdhf4nT8HpyGLleATWqPVyLXfnYkkbsj/ZW666ak= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 55C0D1E11E; Fri, 1 Dec 2023 11:27:54 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Luis Machado , John Baldwin , "Aktemur, Tankut Baris" , Simon Marchi , John Baldwin Subject: [PATCH 04/24] gdb: simplify conditions in regcache::{read, write, raw_collect, raw_supply}_part Date: Fri, 1 Dec 2023 11:27:17 -0500 Message-ID: <20231201162751.741751-5-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231201162751.741751-1-simon.marchi@efficios.com> References: <20231201162751.741751-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3496.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org 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 --- gdb/regcache.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gdb/regcache.c b/gdb/regcache.c index 6c986b740dfd..7eb54d27b135 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);