[ub] ub due to left operand of shift

John Regehr regehr at cs.utah.edu
Thu Oct 24 23:56:33 CEST 2013

Thanks for the details, Chandler. I'm really happy to hear that people 
found these error reports to be useful, even if that wasn't my 
experience. Perhaps I was talking to the wrong developers. I certainly 
would not want to push a change that reduces our ability to find bugs. 
It seems a little ironic that undefined behavior -- the source of so 
many horrible problems -- turns out to be a powerful debugging aid when 
coupled with good checkers.


On 10/24/13, 3:46 PM, Chandler Carruth wrote:
> On Thu, Oct 24, 2013 at 2:16 PM, John Regehr <regehr at cs.utah.edu
> <mailto:regehr at cs.utah.edu>> wrote:
>     one way to help resolve the issue would be to stress-test a few
>     large applications compiled with integer undefined behavior checking and
>     then take a close look at the resulting signed left-shift UBs.
> FWIW, sorry I wasn't more explicit, I'm saying we have done this on at
> least a few applications. Unfortunately, at the moment I just have my
> memory. I can dig up data if it is necessary.
> My memory is that LLVM was a mixture of two patterns followed by a long
> tail of other stuff, and I have data that shows several large C++
> applications at Google had similar distributions.
> 1) Code that *wanted* to be unsigned, but forgot that a literal '42' was
> signed. We changed it to '42u' which was preferable on all fronts.
> 2) Bugs
> 3) Everything else
> You can call #1 false positives, but the code reviewers for the patches
> to projects based on this have consistently felt that this was a useful
> fix/clarification of their intent in the code.
> We did consider some examples of #3 to be unfortunate (requiring a cast,
> etc), but they were quite rare relatively.
> The other thing to consider is that the bugs we found in #2 were
> serious, hard to find bugs that had gone unnoticed for a long time. Our
> developers were very willing to pay the price of finding those bugs.
> _______________________________________________
> ub mailing list
> ub at isocpp.open-std.org
> http://www.open-std.org/mailman/listinfo/ub

More information about the ub mailing list