]> git.ipfire.org Git - thirdparty/gcc.git/commit
MATCH: Transform `(1 >> X) !=/== 0` into `X ==/!= 0`
authorAndrew Pinski <apinski@marvell.com>
Sun, 3 Sep 2023 06:04:41 +0000 (06:04 +0000)
committerAndrew Pinski <apinski@marvell.com>
Tue, 5 Sep 2023 20:56:48 +0000 (20:56 +0000)
commitb34f373635635fa331d2803d9232b3cfd4fd4fd1
tree909e1b6bd0a54ed06d3cd988e800e1a7594990d5
parentb78cedc6b5bc062717a3e0efb10da8e19af1c422
MATCH: Transform `(1 >> X) !=/== 0` into `X ==/!= 0`

We currently have a pattern for handling `(C >> X) & D == 0`
but if C is 1 and D is 1, the `& 1` might have been removed.

gcc/ChangeLog:

PR tree-optimization/105832
* match.pd (`(1 >> X) != 0`): New pattern

gcc/testsuite/ChangeLog:

PR tree-optimization/105832
* gcc.dg/tree-ssa/pr105832-1.c: New test.
* gcc.dg/tree-ssa/pr105832-2.c: New test.
* gcc.dg/tree-ssa/pr105832-3.c: New test.
gcc/match.pd
gcc/testsuite/gcc.dg/tree-ssa/pr105832-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/pr105832-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/pr105832-3.c [new file with mode: 0644]