From: Richard Biener Date: Tue, 4 May 2021 11:39:14 +0000 (+0200) Subject: tree-optimization/100414 - compute dominance info in phiopt X-Git-Tag: releases/gcc-11.2.0~452 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12ff76b01f07fff049cbfeb0ef536ce42f1f178b;p=thirdparty%2Fgcc.git tree-optimization/100414 - compute dominance info in phiopt phiopt now has dominator queries but fails to compute dominance info. 2021-05-04 Richard Biener PR tree-optimization/100414 * tree-ssa-phiopt.c (get_non_trapping): Do not compute dominance info here. (tree_ssa_phiopt_worker): But unconditionally here. * gcc.dg/pr100414.c: New testcase. (cherry picked from commit 7a3897661151cf8cc77d11f7a98fc64259210748) --- diff --git a/gcc/testsuite/gcc.dg/pr100414.c b/gcc/testsuite/gcc.dg/pr100414.c new file mode 100644 index 000000000000..7876f6b56e9b --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr100414.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fno-tree-dce -fno-tree-dse -fchecking" } */ + +int i; +void +foo (void) +{ + i &= i && __builtin_bswap16 (i); +} diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index aa48f447d23c..5831a7764a49 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -174,6 +174,8 @@ tree_ssa_phiopt_worker (bool do_store_elim, bool do_hoist_loads, bool early_p) bool cfgchanged = false; hash_set *nontrap = 0; + calculate_dominance_info (CDI_DOMINATORS); + if (do_store_elim) /* Calculate the set of non-trapping memory accesses. */ nontrap = get_non_trapping (); @@ -2438,9 +2440,6 @@ get_non_trapping (void) { nt_call_phase = 0; hash_set *nontrap = new hash_set; - /* We're going to do a dominator walk, so ensure that we have - dominance information. */ - calculate_dominance_info (CDI_DOMINATORS); nontrapping_dom_walker (CDI_DOMINATORS, nontrap) .walk (cfun->cfg->x_entry_block_ptr);