On Thu, Sep 24, 2015 at 4:32 PM, Michal Nazarewicz <min...@mina86.com> wrote: > On Wed, Sep 23 2015, Alexey Dobriyan wrote: >> I've sent kabs() before which didn't go in because it didn't work for >> INT_MAX et al >> (don't worry, this abs() doens't as well) but it is nicer that this >> version in other aspects >> (hopefully). >> >> [PATCH v2] Add kabs() >> http://marc.info/?l=linux-kernel&m=133518745522740&w=4 > > Perhaps: > > + (void)(_x))))))); \ > > instead of: > > + _x)))))); \ > > at the end. Since kabs makes no sense for unsigned types it’s best to > fail with compile-time error than to let user think that the call is > actually doing something.
I thought so, but the amount of uses like unsigned int = abs(unsigned int - unsigned int) is non trivial. With a few exceptions it is about 170 on x86_64 allmodconfig. Most of them are correct because abs() casts to signed first. So if you want to expose such uses, then you are forced to write unsigned int = kabs((int)(unsigned int - unsigned int)); Don't know if it's a good thing. > Also, you don’t need ({ … }) around the ‘_x < 0 ? -_x : _x’ expression, > do you? Seems so, thank you for noticing. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/