On 2026-07-28 09:46:25+0100, David Laight wrote: > On Sun, 26 Jul 2026 17:13:03 +0700 > Ammar Faizi <[email protected]> wrote: > > > Negating the smallest negative value of a signed type overflows, which > > is undefined behavior. The selftests are built with: > > > > -fsanitize=undefined -fsanitize-trap=all > > > > so a caller passing INT_MIN does not merely get an unspecified answer, > > it dies (on both x86-64 and i386): > > Thinking more, that is probably the correct thing to do. > 'Undefined behaviour' means exactly that. > It tends to be used for things that might cause traps on some architectures. > But I believe 'undefined behaviour' is exactly that, erasing your hard disk > (or starting a nuclear war) are both valid.
That's a good point. Calling these functions with those inputs is UB as per the standard(s). By trapping it under -fsanitize=undefined the users get what they ask for. So I think we should keep the functions as they are. If any users require different semantics, they can use a local function easily. Thomas

