[0/3] Fix PR 111972

Message ID 20231202063725.3405094-1-quic_apinski@quicinc.com
Headers
Series Fix PR 111972 |

Message

Andrew Pinski (QUIC) Dec. 2, 2023, 6:37 a.m. UTC
  This patch set fixes PR 111972 and the fallout from it.

The first patch is a fix to zero_one_valued_p's convert pattern
which I hit while running the testsuite with the last patch.

The second patch is a fix for -fanalyzer which I had implemented with
a different version of the 3rd patch while I was working at Marvell.

And the 3rd patch fixes the issue by having the following as
canonical forms:
* `a ^ 1` is the canonical form of `(convert_back)(zero_one == 0)` (and `(convert_back)(zero_one != 1)`).
* `(convert)a` is the canonical form of `(convert)(zero_one != 0)` (and `(convert)(zero_one == 1)`).

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>


Andrew Pinski (3):
  MATCH: Fix zero_one_valued_p's convert pattern
  Remove check of unsigned_char in
    maybe_undo_optimize_bit_field_compare.
  MATCH: (convert)(zero_one !=/== 0/1) for outer type and zero_one type
    are the same

 gcc/analyzer/region-model-manager.cc       |  3 --
 gcc/match.pd                               | 24 +++++++++++++++
 gcc/testsuite/gcc.dg/tree-ssa/pr110637-1.c | 10 +++++++
 gcc/testsuite/gcc.dg/tree-ssa/pr110637-2.c | 13 +++++++++
 gcc/testsuite/gcc.dg/tree-ssa/pr110637-3.c | 14 +++++++++
 gcc/testsuite/gcc.dg/tree-ssa/pr111972-1.c | 34 ++++++++++++++++++++++
 gcc/testsuite/gcc.dg/tree-ssa/pr69270.c    |  4 +--
 gcc/testsuite/gcc.target/i386/pr110790-2.c | 16 ++++++++--
 8 files changed, 111 insertions(+), 7 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr110637-1.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr110637-2.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr110637-3.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr111972-1.c