https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111373
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Summary|Register moves right before |conditional "
|stores and return |
Status|UNCONFIRMED |NEW
Keywords|ra |
Component|rtl-optimization |middle-end
Last reconfirmed| |2023-09-11
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
In this case we have this right before expand:
if (v$2_9 < v$1_25)
goto <bb 7>; [INV]
else
goto <bb 8>; [INV]
<bb 7> :
<bb 8> :
# a$1_65 = PHI <a$1_64(6), a$2_66(7)>
# a$2_67 = PHI <a$2_66(6), a$1_64(7)>
But this is a conditional move.
The biggest issue here is that GCC is not detecting this as a conditional move
though.
And then make really bad register allocation decisions due to that.