From patchwork Thu Nov 11 08:21:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 47440 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 67B753858402 for ; Thu, 11 Nov 2021 08:24:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 67B753858402 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1636619049; bh=QRP/YBgkOOSqOb37BrhcDaWlcubVcTFnCimn1s6t+dU=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=YTKz8W3rZdA1V+i15Z3J2OsUWAasjmHEnPot1Fgb7frrIbkCsFIHdg22VOY1lKVtc zwBpgbemk0b6swE1iYj79mwZ/9ZQ1N/nVCQF8Mmcz6VLaMynAVUy0//mQnmZEshXV3 4+cObA/1rt8KEGZaTtg8phFXFzzPm/qP4oJsNe0M= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id CAF933858432 for ; Thu, 11 Nov 2021 08:21:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CAF933858432 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id E08351FD39 for ; Thu, 11 Nov 2021 08:21:47 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id C073F13D4A for ; Thu, 11 Nov 2021 08:21:47 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id Otl0LZvSjGFdRgAAMHmgww (envelope-from ) for ; Thu, 11 Nov 2021 08:21:47 +0000 Date: Thu, 11 Nov 2021 09:21:47 +0100 (CET) To: gcc-patches@gcc.gnu.org Subject: [PATCH] Remove find_pdom and find_dom Message-ID: MIME-Version: 1.0 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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-Patchwork-Original-From: Richard Biener via Gcc-patches From: Richard Biener Reply-To: Richard Biener Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This removes now useless wrappers around get_immediate_dominator. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. 2021-11-11 Richard Biener * cfganal.c (find_pdom): Remove. (control_dependences::find_control_dependence): Remove special-casing of entry block, call get_immediate_dominator directly. * gimple-predicate-analysis.cc (find_pdom): Remove. (find_dom): Likewise. (find_control_equiv_block): Call get_immediate_dominator directly. (compute_control_dep_chain): Likewise. (predicate::init_from_phi_def): Likewise. --- gcc/cfganal.c | 28 ++++--------------------- gcc/gimple-predicate-analysis.cc | 36 +++----------------------------- 2 files changed, 7 insertions(+), 57 deletions(-) diff --git a/gcc/cfganal.c b/gcc/cfganal.c index 11ab23623ae..0cba612738d 100644 --- a/gcc/cfganal.c +++ b/gcc/cfganal.c @@ -372,25 +372,6 @@ control_dependences::clear_control_dependence_bitmap (basic_block bb) bitmap_clear (&control_dependence_map[bb->index]); } -/* Find the immediate postdominator PDOM of the specified basic block BLOCK. - This function is necessary because some blocks have negative numbers. */ - -static inline basic_block -find_pdom (basic_block block) -{ - gcc_assert (block != ENTRY_BLOCK_PTR_FOR_FN (cfun)); - - if (block == EXIT_BLOCK_PTR_FOR_FN (cfun)) - return EXIT_BLOCK_PTR_FOR_FN (cfun); - else - { - basic_block bb = get_immediate_dominator (CDI_POST_DOMINATORS, block); - if (! bb) - return EXIT_BLOCK_PTR_FOR_FN (cfun); - return bb; - } -} - /* Determine all blocks' control dependences on the given edge with edge_list EL index EDGE_INDEX, ala Morgan, Section 3.6. */ @@ -402,15 +383,14 @@ control_dependences::find_control_dependence (int edge_index) gcc_assert (get_edge_src (edge_index) != EXIT_BLOCK_PTR_FOR_FN (cfun)); - if (get_edge_src (edge_index) == ENTRY_BLOCK_PTR_FOR_FN (cfun)) - ending_block = single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun)); - else - ending_block = find_pdom (get_edge_src (edge_index)); + ending_block = get_immediate_dominator (CDI_POST_DOMINATORS, + get_edge_src (edge_index)); for (current_block = get_edge_dest (edge_index); current_block != ending_block && current_block != EXIT_BLOCK_PTR_FOR_FN (cfun); - current_block = find_pdom (current_block)) + current_block = get_immediate_dominator (CDI_POST_DOMINATORS, + current_block)) set_control_dependence_map_bit (current_block, edge_index); } diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc index f0c84446194..454113d532e 100644 --- a/gcc/gimple-predicate-analysis.cc +++ b/gcc/gimple-predicate-analysis.cc @@ -45,36 +45,6 @@ #define DEBUG_PREDICATE_ANALYZER 1 -/* Find the immediate postdominator of the specified basic block BB. */ - -static inline basic_block -find_pdom (basic_block bb) -{ - basic_block exit_bb = EXIT_BLOCK_PTR_FOR_FN (cfun); - if (bb == exit_bb) - return exit_bb; - - if (basic_block pdom = get_immediate_dominator (CDI_POST_DOMINATORS, bb)) - return pdom; - - return exit_bb; -} - -/* Find the immediate dominator of the specified basic block BB. */ - -static inline basic_block -find_dom (basic_block bb) -{ - basic_block entry_bb = ENTRY_BLOCK_PTR_FOR_FN (cfun); - if (bb == entry_bb) - return entry_bb; - - if (basic_block dom = get_immediate_dominator (CDI_DOMINATORS, bb)) - return dom; - - return entry_bb; -} - /* Return true if BB1 is postdominating BB2 and BB1 is not a loop exit bb. The loop exit bb check is simple and does not cover all cases. */ @@ -96,7 +66,7 @@ is_non_loop_exit_postdominating (basic_block bb1, basic_block bb2) static inline basic_block find_control_equiv_block (basic_block bb) { - basic_block pdom = find_pdom (bb); + basic_block pdom = get_immediate_dominator (CDI_POST_DOMINATORS, bb); /* Skip the postdominating bb that is also a loop exit. */ if (!is_non_loop_exit_postdominating (pdom, bb)) @@ -1167,7 +1137,7 @@ compute_control_dep_chain (basic_block dom_bb, const_basic_block dep_bb, break; } - cd_bb = find_pdom (cd_bb); + cd_bb = get_immediate_dominator (CDI_POST_DOMINATORS, cd_bb); post_dom_check++; if (cd_bb == EXIT_BLOCK_PTR_FOR_FN (cfun) || post_dom_check > MAX_POSTDOM_CHECK) @@ -1788,7 +1758,7 @@ predicate::init_from_phi_def (gphi *phi) basic_block phi_bb = gimple_bb (phi); /* Find the closest dominating bb to be the control dependence root. */ - basic_block cd_root = find_dom (phi_bb); + basic_block cd_root = get_immediate_dominator (CDI_DOMINATORS, phi_bb); if (!cd_root) return false;