https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126245

Jeffrey A. Law <law at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Blocks|120763                      |

--- Comment #5 from Jeffrey A. Law <law at gcc dot gnu.org> ---
Just taking a bit of a looksie this morning it definitely feels like any RTL
improvements in this space need to happen during expansion.

The core problem is once we have the generalized conditional move form there's
no viable path to good code generation without resorting to a
define_insn_and_split because we don't have 4->3 splits.  In generalized
conditional move form we have neg+czero+czero+add/or.  We want to generate
neg+xor+add.

ifcvt won't save us because it's already in conditional move form.

So we'd need to generate better code at expansion time as Pinksi suspected. 
Straightforward, but probably not trivial.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120763
[Bug 120763] [meta-bug] Tracker for bugs to visit during weekly RISC-V meeting

Reply via email to