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 ...