https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102232
Bug ID: 102232
Summary: Missed arithmetic fold
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: llvm at rifkin dot dev
Target Milestone: ---
LLVM optimizes bar into tgt here but not foo.
https://godbolt.org/z/nhEjaoanx
int foo(int a, int b) {
return b * (1 + a / b) - a;
}
int bar(int a, int b) {
return b * (a / b) + b - a;
}
int tgt(int a, int b) {
return b - a % b;
}
LLVM appears to miss this too.