This seems to only trigger in limited circumstances, one of my favorite accidentally true expression is still warning-free:
printf("%d\n", 2^5); // Warning here.
assert((3^2) + (4^2) == (5^2)); // No warnings.
https://gcc.godbolt.org/z/4GqdEMfPbIt hasn’t in this sense. The ^n operator flips the ‘one’ bits in n in its argument, so for any n, we have
a = a^n^n
So, for all a and b, a^n + b^n = ((a^n + b^n)^n)^n
that makes c = (a^n + b^n)^n
a solution to a^n + b^n = c^n
and that means we can find a c for every n, a and b.Well, that's a relief. Definitely won't fix anything already built, but it's a nice step in the right direction. The idea of finding out that a shared library is breaking unrelated code is a scary proposition.
It's a pleasure to have it for C still
I'm just getting started with it. My _impression_ is that this isn't quite mature yet. On a toy example I was working on, I had trouble beating host only Openmp performance. Cuda thrust was about 5 times faster, while taking about 5x less effort. Just a data point.
* C23 features
* C++23 features
* OpenMP work, including v5 / 5.1
* Support for more AArch64, arm CPUs
* Support for more Intel CPUs and ISA extensions (man, there are so many of those...)
* More static analyzer checks