On 05/06/2015 16:40, Peter Maydell wrote: > > Speaking in general, I find that this makes code worse. If you're using > > ~0 you probably want the value to extend with infinite ones. > > > > Using ~0u instead of ~0ull may cause problems down the line, and ~0ul > > is even worse because it is not 64-bit safe. > > I agree that C's semantics are terrible here (ideally > left shift of negative values should Just Work in the 2s > complement style, and right shift of negative values should > be an arithmetic shift). Unfortunately we're stuck with > the standard, which says this is undefined behaviour :-(
But this is not something that C compiler writers can reasonably change. Can someone add a checkpatch rule that forbids shifting left U or UL constants (i.e. only ULL)? That would alleviate my concerns with these ubsan warnings. Paolo