From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id 725BB3984069 for ; Tue, 4 May 2021 13:51:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 725BB3984069 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rguenther@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 57C5DAF38 for ; Tue, 4 May 2021 13:50:59 +0000 (UTC) Date: Tue, 4 May 2021 15:50:58 +0200 (CEST) From: Richard Biener Sender: rguenther@ryzen.fritz.box To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/100414 - compute dominance info in phiopt Message-ID: User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 May 2021 13:51:02 -0000 phiopt now has dominator queries but fails to compute dominance info. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. 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. --- gcc/testsuite/gcc.dg/pr100414.c | 9 +++++++++ gcc/tree-ssa-phiopt.c | 5 ++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr100414.c diff --git a/gcc/testsuite/gcc.dg/pr100414.c b/gcc/testsuite/gcc.dg/pr100414.c new file mode 100644 index 00000000000..7876f6b56e9 --- /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 35ce51e5977..5c18ea16600 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); -- 2.26.2