[PATCH 2/8] x86: optimize LEA

Jan Beulich jbeulich@suse.com
Tue Apr 27 06:31:57 GMT 2021


On 26.04.2021 19:08, Joseph Myers wrote:
> On Fri, 23 Apr 2021, Jan Beulich via Binutils wrote:
> 
>> +		  && !i.prefix[ADDR_PREFIX] != (flag_code == CODE_32BIT))
> 
> I'm seeing a -Werror build failure (with GCC 5):
> 
> /scratch/jmyers/glibc-bot/src/binutils/gas/config/tc-i386.c: In function 'optimize_encoding':
> /scratch/jmyers/glibc-bot/src/binutils/gas/config/tc-i386.c:4152:31: error: logical not is only applied to the left hand side of comparison [-Werror=logical-not-parentheses]
>      && !i.prefix[ADDR_PREFIX] != (flag_code == CODE_32BIT))

Well, not sure what to say. For one I consider the warning bogus. It
should be up to the programmer how booleans on either side of
relational operators get expressed. ! is no worse or better than ==
or any other relational operator. For example, personally I consider

     && !i.prefix[ADDR_PREFIX] == !(flag_code == CODE_32BIT))

worse.

And then, if you think this is worthwhile fixing (which probably it
is, as we're unlikely to want to state that binutils don't build
with gcc 5), how about you submit a patch, since you've noticed the
issue and hence you are in a position to check whether whatever
possible change doesn't again trigger some kind of (bogus or not)
warning?

Jan


More information about the Binutils mailing list