diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2023-04-20 13:10:40 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2023-04-20 13:48:29 -0400 |
commit | 17aa9ddb34581855dd013745c8be27dda024de4a (patch) | |
tree | 450304b379b0412417c144089824197877192c90 /gcc/gimple-range-fold.cc | |
parent | 87c9bae4e32b54829dce0a93ff735412d5f684f8 (diff) | |
download | gcc-17aa9ddb34581855dd013745c8be27dda024de4a.zip gcc-17aa9ddb34581855dd013745c8be27dda024de4a.tar.gz gcc-17aa9ddb34581855dd013745c8be27dda024de4a.tar.bz2 |
Do not ignore UNDEFINED ranges when determining PHI equivalences.
Do not ignore UNDEFINED name arguments when registering two-way equivalences
from PHIs.
PR tree-optimization/109564
gcc/
* gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
UNDEFINED range names when deciding if all PHI arguments are the same,
gcc/testsuite/
* gcc.dg/torture/pr109564-1.c: New testcase.
* gcc.dg/torture/pr109564-2.c: Likewise.
* gcc.dg/tree-ssa/evrp-ignore.c: XFAIL.
* gcc.dg/tree-ssa/vrp06.c: Likewise.
Diffstat (limited to 'gcc/gimple-range-fold.cc')
-rw-r--r-- | gcc/gimple-range-fold.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/gimple-range-fold.cc b/gcc/gimple-range-fold.cc index 429734f..180f349 100644 --- a/gcc/gimple-range-fold.cc +++ b/gcc/gimple-range-fold.cc @@ -771,16 +771,16 @@ fold_using_range::range_of_phi (vrange &r, gphi *phi, fur_source &src) if (gimple_range_ssa_p (arg) && src.gori ()) src.gori ()->register_dependency (phi_def, arg); + } - // Track if all arguments are the same. - if (!seen_arg) - { - seen_arg = true; - single_arg = arg; - } - else if (single_arg != arg) - single_arg = NULL_TREE; + // Track if all arguments are the same. + if (!seen_arg) + { + seen_arg = true; + single_arg = arg; } + else if (single_arg != arg) + single_arg = NULL_TREE; // Once the value reaches varying, stop looking. if (r.varying_p () && single_arg == NULL_TREE) |