[Bug middle-end/94543] New: missed optimization with MIN and AND with type promotion
rth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 9 19:13:01 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94543
Bug ID: 94543
Summary: missed optimization with MIN and AND with type
promotion
Product: gcc
Version: tree-ssa
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: rth at gcc dot gnu.org
Target Milestone: ---
unsigned f(unsigned short x) { return (x > 0xff ? 0xff : x) & 0xff; }
cmpw $255, %di
movl $255, %eax
cmova %eax, %edi
movzwl %di, %eax
ret
The final AND is of course redundant. The optimizer removes it
for wider types, but fails to do so when promoting from short.
More information about the Gcc-bugs
mailing list