Hey Gabe,

Iru Cai made a fix for this a week or so ago:
https://gem5-review.googlesource.com/c/public/gem5/+/33154. Not sure if
this addresses all concerns, but their change is mostly basic reduction due
to `imm` and `ecount` being unsigned. I also find if you take on board
these observations, there's at least one unreachable branch, and one
condition that's always true (see my comments in the Gerrit PatchSet).

Kind regards,
Bobby
--
Dr. Bobby R. Bruce
Room 2235,
Kemper Hall, UC Davis
Davis,
CA, 95616

web: https://www.bobbybruce.net


On Sun, Aug 30, 2020 at 3:52 AM Gabe Black via gem5-dev <[email protected]>
wrote:

> Hi folks. I'm seeing a few build failures for ARM with gcc version 10.2.
> Since these look like they may be real bugs and I don't want to make a mess
> fixing them or do a bunch of research, I'll mention them here so we can
> collectively find the right fix. There are a lot of instances of these two:
>
> build/ARM/arch/arm/generated/exec-ns.cc.inc:278501:40: error: comparison
> of unsigned express
> ion in '>= 0' is always true [-Werror=type-limits]
> 278501 |         bool posCount = ((count * imm) >= 0);
>
>
> build/ARM/arch/arm/generated/exec-ns.cc.inc:278970:40: error: comparison
> of unsigned express
> ion in '< 0' is always false [-Werror=type-limits]
> 278970 |         bool negCount = ((count * imm) < 0);
>
> I'm not sure what's going on with these. Maybe applying the same template
> with both signed and unsigned imm and count fields? As far as I can tell
> with a little digging around, imm is usually unsigned. I'm not sure where
> count comes from, but I'm guessing also unsigned?
>
> build/ARM/arch/arm/generated/exec-ns.cc.inc:169243:29: error: '
> destReg.ArmISAInst::VqdmulhsQ
> <_Element>::execute<signed char>::RegVect::regs[0]' may be used
> uninitialized in this functi
> on [-Werror=maybe-uninitialized]
> 169243 |             FpDestP0 = letoh(destReg.regs[0]);
>
> I haven't looked into these at all.
>
> build/ARM/arch/arm/generated/exec-ns.cc.inc:169491:17: error: comparison
> of unsigned express
> ion in '< 0' is always false [-Werror=type-limits]
> 169491 |         if (imm < 0 && imm >= eCount) {
>
> This one looks really fishy. How would imm be both less than 0 and also
> greater than eCount? Is eCount negative? Is it ok for it to be just a
> little negative? Is this supposed to be an ||? Apparently imm is unsigned
> anyway, so comparing it with 0 is pointless.
>
> Gabe
> _______________________________________________
> gem5-dev mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to