https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94786
Bug ID: 94786
Summary: Missed min/max pattern using xor+and+less
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: gabravier at gmail dot com
Target Milestone: ---
int r1(int x, int y)
{
return y ^ ((x ^ y) & -(x < y));
}
int r2(int x, int y)
{
return x ^ ((x ^ y) & -(x < y));
}
`r1` can be optimized to `min` and `r2` to `max`. This transformation is done
by LLVM, but not by GCC.
Comparison here: https://godbolt.org/z/hNhkqM