https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96696
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- I'd say doing sth at RTL expansion. For GIMPLE we should consider the cases int g1, g2; int f(int x, int y) { g1 = x / y; return x - (x % y); } int g(int x, int y) { g2 = x % y; return (x / y) * y; } in terms of CSE.