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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=82666

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note in this case the fcsel is on the critial path which slows down things.


So the pass split path is trying to split the critial path but it looks like
there needs to be some heurstics here on this. For integer types, having a csel
might be ok while for float, splitting the path might be right approach.  So
maybe the easiest fix would be add:

```
if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (lhs))
  return true;
```

Right after:
```
  tree lhs = gimple_assign_lhs (stmt);
```
In poor_ifcvt_pred .

That assumes floating point csel is worse off than integer csel.

Note I filed the FMA issue as PR 118506 (though I thought there was another bug
about that but I did't look yet).

Reply via email to