https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119683
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Target Milestone|--- |13.4 Ever confirmed|0 |1 Last reconfirmed| |2025-04-08 Summary|[13/14 Regression] |[13/14/15 Regression] |recalculating the return |recalculating the return |value which was already in |value which was already in |the register right before |the register right before |function return |function return Component|middle-end |tree-optimization --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The difference is: _3 = (int) c_12(D); _4 = _3 + -48; _15 = (unsigned int) _4; vs _26 = c_12(D) + -48; _15 = (unsigned int) _26; The match pattern: ((T)(A)) + CST -> (T)(A + CST) used to handle this. but for some reason it is not doing it any more ...