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

Reply via email to