On Thu, Sep 11, 2025 at 3:16 PM Matteo Nicoli
<[email protected]> wrote:
>
> I am writing this follow-up email to specify that I executed the tests
> contained in this patch on aarch64-arm64-linux-gnu
The changelog part of the commit message is formatted wrongly.
* gcc/match.pd: added the following optimizations for bitwise operations:
- (a != b) & ((a|b) != 0) -> (a != b)
all lines should be indented exactly by 1 tab, the 'gcc/' part is
superfluous, it
should be just '* match.pd'
* gcc.dg/int-bwise-opt-1.c: Tests the following optimisation patterns:
- (a != b) & ((a|b) != 0) -> (a != b)
Likewise for the indenting.
+(simplify
+ (bit_and:c (ne:c @0 @1) (ne:c (bit_ior @0 @1) integer_zerop))
+ (ne:c @0 @1))
The ':c' on the != 0 is superfluous. Canonicalization guarantees constants
are ordered second. The :c on the simplification result is useless. So:
(simplify
(bit_and:c (ne:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))
(ne @0 @1))
+(simplify
+ (bit_and:c (ne:c @0 @1) (eq:c (bit_ior @0 @1) integer_zerop))
+ { integer_zero_node; })
+(simplify
+ (bit_ior:c (eq:c @0 @1) (ne:c (bit_ior @0 @1) integer_zerop))
+ { integer_one_node; })
Using integer_zero/one_node is wrong, you should use
build_zero_cst (type); and build_one_cst (type) instead to get
appropriately typed results. This probably means you do not have
coverage for these cases.
Otherwise this looks OK to me.
Thanks,
Richard.
> Best regards,
> Matteo
>
>
> On Sep 9, 2025, at 10:39 PM, Matteo Nicoli <[email protected]> wrote:
>
> Dear reviewers,
>
> I attached the patch for this Bugzilla issue:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117760
> I also attached an SMT file for the formal verifications of these properties.
> At the bottom of the file I pasted its output (executed with Z3).
>
> Best regards,
> Matteo
>
> <117760.smt2>
> <tree-optimization-117760.patch>
>
>