[Bug tree-optimization/107043] New: range information not used in popcount
drepper.fsp+rhbz at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Sep 26 20:10:20 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107043
Bug ID: 107043
Summary: range information not used in popcount
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: drepper.fsp+rhbz at gmail dot com
Target Milestone: ---
This code could be compiled to a simple return of the value 1 but it isn't
because the range information for n does not survive long enough.
int g(int n)
{
n &= 0x8000;
if (n == 0)
return 1;
return __builtin_popcount(n);
}
The code generated today is lengthy:
0: 81 e7 00 80 00 00 and $0x8000,%edi
6: ba 01 00 00 00 mov $0x1,%edx
b: 89 f8 mov %edi,%eax
d: c1 e8 0f shr $0xf,%eax
10: 85 ff test %edi,%edi
12: 0f 44 c2 cmove %edx,%eax
15: c3 ret
More information about the Gcc-bugs
mailing list