On 8/18/19 9:34 PM, Nathan Chancellor wrote: > r369217 in clang added a new warning about potential misuse of the xor > operator as an exponentiation operator: > > ../lib/test_bpf.c:870:13: warning: result of '10 ^ 300' is 294; did you > mean '1e300'? [-Wxor-used-as-pow] > { { 4, 10 ^ 300 }, { 20, 10 ^ 300 } }, > ~~~^~~~~ > 1e300 > ../lib/test_bpf.c:870:13: note: replace expression with '0xA ^ 300' to > silence this warning > ../lib/test_bpf.c:870:31: warning: result of '10 ^ 300' is 294; did you > mean '1e300'? [-Wxor-used-as-pow] > { { 4, 10 ^ 300 }, { 20, 10 ^ 300 } }, > ~~~^~~~~ > 1e300 > ../lib/test_bpf.c:870:31: note: replace expression with '0xA ^ 300' to > silence this warning > > The commit link for this new warning has some good logic behind wanting > to add it but this instance appears to be a false positive. Adopt its > suggestion to silence the warning but not change the code. According to > the differential review link in the clang commit, GCC may eventually > adopt this warning as well. > > Link: https://github.com/ClangBuiltLinux/linux/issues/643 > Link: https://github.com/llvm/llvm-project/commit/920890e26812f808a74c60ebc14cc636dac661c1 > Signed-off-by: Nathan Chancellor <natechancellor@xxxxxxxxx> Verified that latest trunk clang indeed has this warning, and below change indeed fixed the warning in the correct way. Acked-by: Yonghong Song <yhs@xxxxxx> > --- > > I highly doubt that 1e300 was intented but if it was (or something else > was), please let me know. Commit history wasn't entirely clear on why > this expression was used over just a raw number. > > lib/test_bpf.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/test_bpf.c b/lib/test_bpf.c > index c41705835cba..5ef3eccee27c 100644 > --- a/lib/test_bpf.c > +++ b/lib/test_bpf.c > @@ -867,7 +867,7 @@ static struct bpf_test tests[] = { > }, > CLASSIC, > { }, > - { { 4, 10 ^ 300 }, { 20, 10 ^ 300 } }, > + { { 4, 0xA ^ 300 }, { 20, 0xA ^ 300 } }, > }, > { > "SPILL_FILL", >