On 24/02/2021 14:16, Mark Wielaard wrote:
Hmmm. I am not sure why that doesn't work. What if you make them
explicitly unsinged (adding u at the end). Or does it simply ignore
the values and just warn because it sees the macro name and not an
explicit number?

I think I don't really understand anymore what this warning is warning
about.  Could you give an example of where this would flag something
that we would like to fix?

I found https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90885, which has a
few more use-cases (in the form of tweets but anyway). GCC might also
get this warning in the future.

For the clang implementation, see https://reviews.llvm.org/D63423

So it only seems to warn for 2 ^ x because that's a common error:

#define NO_RESIZING 0x0u
#define CLEANING    0x2u
int main(void) {
  unsigned p = CLEANING ^ NO_RESIZING;
  unsigned j = NO_RESIZING ^ CLEANING;
  unsigned k = 17 ^ 3;
}

This code only warns for the declaration of p.


Maybe it is easiest to just suppress this warning, when is it enabled?

That's fine with me, I just didn't want to add compiler-specific flags
but I guess we can just check for -Wno-xor-used-as-pow and add that when
the compiler supports it.



- Timm

--
Red Hat GmbH, http://www.de.redhat.com/, Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Michael O'Neill, Tom Savage, Eric Shander

Reply via email to