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.