https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95852
Bug ID: 95852
Summary: Failure to optimize __builtin_mul_overflow pattern
Product: gcc
Version: 11.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: ---
bool f(unsigned x, unsigned y, unsigned* res)
{
*res = x * y;
return x && ((*res / x) != y);
}
This can be optimized to `return __builtin_mul_overflow(x, y, res);`. This
transformation is done by LLVM, but not by GCC.