Andrew Teylu <andrewvaugh...@gmail.com> writes: When I run `multiply.c` from gmpbench [https://gmplib.org/gmpbench], I'm seeing an unsigned integer overflow in `toom_eval_pm2.c` on this line:
neg ^= ((k & 1) - 1) I fully appreciate that unsigned integer overflow is implementation defined, but I am not sure if this is the intended behaviour of `mpn_toom_eval_pm2` or not. In C, unsigned arithmetic is completely defined as computing mod 2^k, where k is the bit size of the corresponding type. I am not sure the arithmetic on unsigned types is what clang is unhappy about, though. Perhaps it dislikes the xor with "neg", which is a signed variable. Arithmetic on signed types as well as assignments between signed and unsigned is not well-defined for certain operand ranges. This is not a real problem with any compiler I am aware of. Of course, an evil compiler is free to make demons fly out our noses whenever we trigger "undefined" signed integer operations. I don't think it is worth our time trying to placate clang and its ever growing world of warnings. We would end up with utterly messy code which nobody could read. -- Torbjörn Please encrypt, key id 0xC8601622 _______________________________________________ gmp-bugs mailing list gmp-bugs@gmplib.org https://gmplib.org/mailman/listinfo/gmp-bugs