https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82940
Manjunath S Matti <mmatti at linux dot vnet.ibm.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mmatti at linux dot
vnet.ibm.com
--- Comment #9 from Manjunath S Matti <mmatti at linux dot vnet.ibm.com> ---
the following code
unsigned char g(unsigned char t[], unsigned char v)
{
return (t[v & 0x7f] & 0x7f) | (v & 0x80);
}
on the gcc trunk and 15.2.0
rlwinm %r9,%r4,0,25,31
rlwinm %r4,%r4,0,0,24
lbzx %r3,%r3,%r9
rlwinm %r3,%r3,0,25,31
or %r3,%r3,%r4
blr
clang generates
clrldi %r5, %r4, 57
lbzx %r3, %r3, %r5
rlwimi %r4, %r3, 0, 25, 31
clrldi %r3, %r4, 32
blr