These patterns are not needed any more. There were already 2 patterns which did `(ne bool_var 0)` into `bool_var` and `(eq bool_var 1)` into `bool_var`. Just they were after the pattern that did `(cmp (cond @0 @1 @2) @3)` simplification but that pattern is now after the ones. Also these patterns will cause in some cases a new statement to be created for the comparison. In the case of floating point comparison wiht non-call exceptions (and trapping math), can cause a new statement every time fold_stmt is called.
gcc.dg/tree-ssa/vrp24.c needed to be adjusted to before r13-322-g7f04b0d786e13f. gcc.dg/analyzer/null-deref-pr102671-2.c needs an increased analyzer-max-svalue-depth not to get an extra warning. gcc/ChangeLog: * match.pd (`(ne (cmp) 0)`, `(eq (cmp) 1)`): Remove. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/vrp24.c: Adjust. * gcc.dg/analyzer/null-deref-pr102671-2.c: Increase analyzer-max-svalue-depth. Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> --- gcc/match.pd | 8 -------- gcc/testsuite/gcc.dg/analyzer/null-deref-pr102671-2.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/vrp24.c | 2 +- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/gcc/match.pd b/gcc/match.pd index ab496d923cc..418efc4230a 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -6898,14 +6898,6 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (if (ic == ncmp) (ncmp @0 @1))))) /* The following bits are handled by fold_binary_op_with_conditional_arg. */ - (simplify - (ne (cmp@2 @0 @1) integer_zerop) - (if (types_match (type, TREE_TYPE (@2))) - (cmp @0 @1))) - (simplify - (eq (cmp@2 @0 @1) integer_truep) - (if (types_match (type, TREE_TYPE (@2))) - (cmp @0 @1))) (simplify (ne (cmp@2 @0 @1) integer_truep) (if (types_match (type, TREE_TYPE (@2))) diff --git a/gcc/testsuite/gcc.dg/analyzer/null-deref-pr102671-2.c b/gcc/testsuite/gcc.dg/analyzer/null-deref-pr102671-2.c index 298e4839b98..bc141d5c028 100644 --- a/gcc/testsuite/gcc.dg/analyzer/null-deref-pr102671-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/null-deref-pr102671-2.c @@ -1,5 +1,5 @@ /* { dg-require-effective-target ptr_eq_long } */ -/* { dg-additional-options "-O2 -Wno-shift-count-overflow" } */ +/* { dg-additional-options "-O2 -Wno-shift-count-overflow --param=analyzer-max-svalue-depth=19" } */ struct lisp; union vectorlike_header { long size; }; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c index c28ca473fc6..f237b7741ec 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c @@ -89,5 +89,5 @@ L7: boolean operation. */ /* { dg-final { scan-tree-dump-times "Simplified relational" 2 "evrp" } } */ -/* { dg-final { scan-tree-dump-times "if " 3 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "if " 4 "optimized" } } */ -- 2.43.0