SjoerdMeijer added a comment.
We also have a few miscompilations. Here's a reproducer for which we produce the wrong result:
short short1, short2, short4;
int main() {
short2 = 5;
short3 = -6;
assert((short1 = ~short2) == short3);
}
https://reviews.llvm.org/D48832