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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
           Assignee|unassigned at gcc dot gnu.org      |pinskia at gcc dot 
gnu.org
   Last reconfirmed|                            |2023-05-13
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
For unsigned x (to simplify things first).
In forwardprop4 we have
  _1 = x_4(D) <= 121211;
  _3 = _1 ? x_4(D) : 0;
  _5 = _3 != 0;

This could be done as:
x_4(D) <= 121211 ? x_4(D) != 0 : 0

Which then would be:
(x_4(D) <= 121211 & x_4(D) != 0) 
((x_4(D) - 1) <= 121210)

So I have a patch which does the second step into the 3rd expression (there is
another bug or 2 about it). the 3rd expression into the final is already done.
It is just the first that needs to happen to written up.

Something like this for the first step.
(for op (tcc_comparison)
/* (c ? a : CST0) op CST1  -->  c ? (a op CST1) : (CST0 op CST1) */
 (simplify
  (op (cond:s @0 @1 CONSTANT_CLASS_P@2) CONSTANT_CLASS_P@3)
  (cond! @0 (op @1 @3) (op @2 @4)))

So mine.

Reply via email to