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...

Reply via email to