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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|riscv                       |riscv aarch64
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
          Component|target                      |tree-optimization
   Last reconfirmed|                            |2026-10-10
                 CC|                            |pinskia at gcc dot gnu.org

--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
//_1 has range of [0,1]
  _2 = _1 * a_6(D);
  _3 = _1 + 4294967295;
  _4 = _3 & b_7(D);
  _8 = _2 | _4;


so this could be:
_t = (bool) _1
_8 = _t ? a_6(D) : b_7(D);

So
(simplify
 (bit_ior:c
  (mult:c zero_one_valued_p@0 @1)
  (bit_and:c (plus @0 integer_minus_onep) @2)
 )
 (cond (convert:boolean_type_node @0) @1 @2)
)

Should work.

Reply via email to