https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91202
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Andrew Pinski from comment #1)
> >does not need its operand to be promoted to int on targets that have shift
> >instruction
>
> Yes it does as that is what C says it does ...
The standard also says that all narrow operations have to be promoted to int,
but we live just fine with:
unsigned char
bar (unsigned char a, unsigned char b)
{
return a + b;
}
that dumps to:
--cut here--
bar (unsigned char a, unsigned char b)
{
unsigned char _3;
<bb 2> [local count: 1073741824]:
_3 = a_1(D) + b_2(D);
return _3;
}
--cut here--
I fail to see the difference...