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.