From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id E53AE386F442 for ; Thu, 21 May 2020 17:32:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E53AE386F442 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=simark.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=simark@simark.ca Received: from [172.16.0.95] (192-222-181-218.qc.cable.ebox.net [192.222.181.218]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 5EA151E792; Thu, 21 May 2020 13:32:12 -0400 (EDT) Subject: Re: [PATCH] gdb: fix -Wtautological-overlap-compare error in lm32-tdep.c To: Simon Marchi , gdb-patches@sourceware.org References: <20200515222857.12514-1-simon.marchi@efficios.com> From: Simon Marchi Message-ID: Date: Thu, 21 May 2020 13:32:11 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20200515222857.12514-1-simon.marchi@efficios.com> Content-Type: text/plain; charset=utf-8 Content-Language: tl Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-14.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 May 2020 17:32:14 -0000 On 2020-05-15 6:28 p.m., Simon Marchi via Gdb-patches wrote: > Building with clang 11, we get: > > /home/smarchi/src/binutils-gdb/gdb/lm32-tdep.c:84:44: error: overlapping comparisons always evaluate to false [-Werror,-Wtautological-overlap-compare] > return ((regnum >= SIM_LM32_EA_REGNUM) && (regnum <= SIM_LM32_BA_REGNUM)) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Indeed, this doesn't make sense, as EA_REGNUM is greater than BA_REGNUM. > I'll assume that it was just a mistake and that these two should be > swapped. > > The regnums for BA and EA are contiguous, so ultimately this particular > part of the condition is only true if regnum is == EA or == BA. These > registers are Exception Address and Breakpoint Address, so I guess it > makes sense for them to be in the system register group. > > The relevant reference is here: > > https://www.latticesemi.com/-/media/LatticeSemi/Documents/UserManuals/JL/LatticeMico32ProcessorReferenceManual39.ashx?document_id=52077 > > gdb/ChangeLog: > > * lm32-tdep.c (lm32_register_reggroup_p): Fix condition. > --- > gdb/lm32-tdep.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c > index 6b5bb1507ff3..73f8ae746f78 100644 > --- a/gdb/lm32-tdep.c > +++ b/gdb/lm32-tdep.c > @@ -81,7 +81,7 @@ lm32_register_reggroup_p (struct gdbarch *gdbarch, int regnum, > return ((regnum >= SIM_LM32_R0_REGNUM) && (regnum <= SIM_LM32_RA_REGNUM)) > || (regnum == SIM_LM32_PC_REGNUM); > else if (group == system_reggroup) > - return ((regnum >= SIM_LM32_EA_REGNUM) && (regnum <= SIM_LM32_BA_REGNUM)) > + return ((regnum >= SIM_LM32_BA_REGNUM) && (regnum <= SIM_LM32_EA_REGNUM)) > || ((regnum >= SIM_LM32_EID_REGNUM) && (regnum <= SIM_LM32_IP_REGNUM)); > return default_register_reggroup_p (gdbarch, regnum, group); > } > -- > 2.26.2 > I pushed this patch. Simon