gdb: fix -Wtautological-overlap-compare error in lm32-tdep.c

Message ID 20200515222857.12514-1-simon.marchi@efficios.com
State New
Headers show
Series
  • gdb: fix -Wtautological-overlap-compare error in lm32-tdep.c
Related show

Commit Message

Shahab Vahedi via Gdb-patches May 15, 2020, 10:28 p.m.
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(-)

-- 
2.26.2

Comments

Simon Marchi May 21, 2020, 5:32 p.m. | #1
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

Patch

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);
 }