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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
You can possibly merge it with the

(for bitop (bit_and bit_ior)
     rbitop (bit_ior bit_and)
  /* (x | y) & x -> x */
  /* (x & y) | x -> x */
 (simplify
  (bitop:c (rbitop:c @0 @1) @0)
  @0)
 /* (~x | y) & x -> x & y */
 /* (~x & y) | x -> x | y */
 (simplify
  (bitop:c (rbitop:c (bit_not @0) @1) @0)
  (bitop @0 @1)))

by using sth like logical_inverted_value (you want bit_inverted_value),

Also you don't need

 (for cmp (tcc_comparison)
  (for icmp (tcc_comparison)

but just

  (for cmp (tcc_comparison)
       icmp (inverted_tcc_comparison)
       ncmp (inverted_tcc_comparison_with_nans))
    ...
   (if (ic == icmp || ic == ncmp)
...

right?

Reply via email to