+(match (logical_inverted_value @0)
+ (truth_not @0))
That's good.
+/* Simplify ~X & X as zero. */
+(simplify
+ (bit_and:c (convert? truth_valued_p@0) (convert? (logical_inverted_value @0)))
+ { build_zero_cst (type); })
That's not what Richard meant. We already have:
/* X & !X -> 0. */
(simplify
(bit_and:c @0 (logical_inverted_value @0))
{ build_zero_cst (type); })
which automatically benefits from your addition to logical_inverted_value
(we might indeed want to add some convert? there though). But we still
need what you had in your previous patch:
+/* Simplify ~X & X as zero. */
+(simplify
+ (bit_and:c (convert? @0) (convert? (bit_not @0)))
+ { build_zero_cst (type); })
to simplify the case where X is not a truth value.
(detail: the indentation looks off for (C1/X)*C2)
--
Marc Glisse