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.

Reply via email to