From: Andrew MacLeod Date: Tue, 11 Apr 2023 21:29:03 +0000 (-0400) Subject: Don't use ANY PHI equivalences in range-on-entry. X-Git-Tag: upstream/13.1.0~94 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=24af552876eff707f75d30d3f0f0e7a5d62dd857;p=platform%2Fupstream%2Fgcc.git Don't use ANY PHI equivalences in range-on-entry. PR 108139 dissallows PHI equivalencies in the on-entry calculator, but it was only checking if the equivlaence was a PHI. In this case, NAME itself is a PHI with an equivlaence caused by an undefined value, so we also need to check that case. Unfortunately this un-fixes 101912. PR tree-optimization/109462 gcc/ * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't check for equivalences if NAME is a phi node. gcc/testsuite/ * gcc.dg/uninit-pr101912.c: XFAIL the warning. --- diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index 6a098d8..3b52f1e 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -1218,7 +1218,9 @@ ranger_cache::fill_block_cache (tree name, basic_block bb, basic_block def_bb) fprintf (dump_file, "\n"); } // See if any equivalences can refine it. - if (m_oracle) + // PR 109462, like 108139 below, a one way equivalence introduced + // by a PHI node can also be through the definition side. Disallow it. + if (m_oracle && !is_a (SSA_NAME_DEF_STMT (name))) { tree equiv_name; relation_kind rel; diff --git a/gcc/testsuite/gcc.dg/uninit-pr101912.c b/gcc/testsuite/gcc.dg/uninit-pr101912.c index 1550c03..62cd2a0 100644 --- a/gcc/testsuite/gcc.dg/uninit-pr101912.c +++ b/gcc/testsuite/gcc.dg/uninit-pr101912.c @@ -11,7 +11,7 @@ tzloadbody (void) for (int i = 0; i < n; i++) { int corr = getint (); - if (corr < 1 || (corr == 1 && !(leapcnt == 0 || (prevcorr < corr ? corr == prevcorr + 1 : (corr == prevcorr || corr == prevcorr - 1))))) /* { dg-bogus "uninitialized" } */ + if (corr < 1 || (corr == 1 && !(leapcnt == 0 || (prevcorr < corr ? corr == prevcorr + 1 : (corr == prevcorr || corr == prevcorr - 1))))) /* { dg-bogus "uninitialized" "pr101912" { xfail *-*-* } } */ return -1; prevcorr = corr;