craig.topper added a comment.
Why should the behavior be X86 specific?
There also seems to be something weirder going on with gcc. They also warn on these.
void foo(char c) {
c = c + c;
}
void bar(short c) {
c = c + c;
}
https://reviews.llvm.org/D44559