I'm not sure I see anything that ensures C1*C2 doesn't overflow. And in particular if C1*C2 overflows and produces 0, the resulting remainder instruction is UB.
- Deleted memtransferinst case in handleEndBlock.
Guys, what do you think about a checker that warns on uninitialized fields only when at least one field is initialized? I'd be much more confident about turning such check on by default. We can still keep a pedantic version.
We've fixed a bunch of bugs of this sort, so I think it's fine to go with.
If there is a unit test for this then it should have been uncovered in the reverse iteration bot: http://lab.llvm.org:8011/builders/reverse-iteration
Things are different for a libgcc-based toolchain and a compiler-rt based toolchain.
Some style nits -- will review the content of the patch once these are fixed. You might want to skim through these: https://llvm.org/docs/CodingStandards.html http://llvm.org/docs/ProgrammersManual.html
Update formatting on static_asserts.
Another high-level note (besides adding tests): please resubmit the patch with full context (e.g., git diff -U9999999 HEAD^..).
Remove commented out code.
Remove unwanted file changes.
- if there are similar tests in the filesystem test suite, and you haven't tripped over them because you spelled your error message the same as we did.