From patchwork Thu Nov 5 10:50:16 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 540348 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 2A5061412ED for ; Thu, 5 Nov 2015 21:50:54 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=D7i8v8ir; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:references:cc:from:message-id:date:mime-version :in-reply-to:content-type; q=dns; s=default; b=YoXZpvObptE9cSRaZ aFKlN0+8c6vcgeAL0vez2/Y4DxOdXVsqSB5eiU6PdFwuWD3ahatpeR1wu+3yxR34 TnTC3ZEfmAv5hAQtiW7nBJuPuWa+Uf85gSkPO3sQTQipJjg5TvKj7KTaWaM7N7bP U/Bfqa312ktZigcPe6Brj5VHmY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:references:cc:from:message-id:date:mime-version :in-reply-to:content-type; s=default; bh=MPiIbZMFpsVr2vQs2//2rh2 eNNs=; b=D7i8v8irEiASMy8hpS0CQOLt2nfgXVXJAYJECjVT1jiCdrvFFhwZiV/ p/dN2Bxko5ZweVO0yvzBUJ5RsujpB9cVyBnKPanYFTumefv1GidsZ3GQPx9oStKJ JAQQInEybwc0eEEhp+Nqip+mBioN0yH9DxHMCdQ4KsibJXTTcoMs= Received: (qmail 114669 invoked by alias); 5 Nov 2015 10:50:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 114659 invoked by uid 89); 5 Nov 2015 10:50:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: fencepost.gnu.org Received: from fencepost.gnu.org (HELO fencepost.gnu.org) (208.118.235.10) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Thu, 05 Nov 2015 10:50:44 +0000 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43032) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ZuI7t-0000Wa-St for gcc-patches@gnu.org; Thu, 05 Nov 2015 05:50:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZuI7o-0008Sa-G2 for gcc-patches@gnu.org; Thu, 05 Nov 2015 05:50:41 -0500 Received: from relay1.mentorg.com ([192.94.38.131]:40298) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZuI7o-0008SW-2I for gcc-patches@gnu.org; Thu, 05 Nov 2015 05:50:36 -0500 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-FEM-01.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1ZuI7m-0005Oh-Ju from Tom_deVries@mentor.com ; Thu, 05 Nov 2015 02:50:34 -0800 Received: from [127.0.0.1] (137.202.0.76) by SVR-IES-FEM-01.mgc.mentorg.com (137.202.0.104) with Microsoft SMTP Server id 14.3.224.2; Thu, 5 Nov 2015 10:50:33 +0000 Subject: [gomp4, committed, 4/9] Revert "Add pass_dominator::sese_mode_p ()" To: "gcc-patches@gnu.org" References: <563B2C99.90308@mentor.com> CC: Jakub Jelinek From: Tom de Vries Message-ID: <563B3468.1080007@mentor.com> Date: Thu, 5 Nov 2015 11:50:16 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <563B2C99.90308@mentor.com> X-detected-operating-system: by eggs.gnu.org: Windows NT kernel [generic] [fuzzy] X-Received-From: 192.94.38.131 On 05/11/15 11:16, Tom de Vries wrote: > Hi, > > now that we have committed -foffload-alias in gomp-4_0-branch ( > https://gcc.gnu.org/ml/gcc-patches/2015-11/msg00214.html ), we no longer > need the kernels region to be a part of the original function when doing > alias analysis. > > So, we no longer have the need to postpone splitting off the kernels > region into a seperate function until after alias analysis, but we can > do this at the same time as when we expand the parallel region. > > The following patch series implements that: > > 1 Move expansion of kernels region back to first omp-expand > 2 Update gate_oacc_kernels to handle oacc function > 3 Revert "Add skip_stmt parm to pass_dominator::get_sese ()" > 4 Revert "Add pass_dominator::sese_mode_p ()" > 5 Handle oacc function in parloops > 6 Update goacc kernels C testcases > 7 Update goacc kernels Fortran testcases > 8 Release_defs in expand_omp_atomic_fetch_op > 9 Remove BUILT_IN_GOACC_KERNELS_INTERNAL > > [ The patch series is broken up into logical bits, but intended as > single commit. Various things in kernels support will be broken in > intermediate stages. ] > > Committed to gomp-4_0-branch. > > I'll post the patches in reply to this message. We needed the sese_mode_p functionality in the dominators pass to limit optimization scope to kernels regions. Now we no longer encounter kernels region in the kernels pass group, but split-off function that used to be kernels region. So we no longer need this functionality. This patch reverts the sese_mode_p functionality. Thanks, - Tom Revert "Add pass_dominator::sese_mode_p ()" 2015-11-04 Tom de Vries revert: 2015-10-12 Tom de Vries * tree-ssa-dom.c (pass_dominator::jump_threading_p): Handle sese_mode_p. (pass_dominator::sese_mode_p, pass_dominator::get_sese): New protected virtual function. (pass_dominator::execute): Handle sese_mode_p. --- gcc/tree-ssa-dom.c | 78 ++++++------------------------------------------------ 1 file changed, 8 insertions(+), 70 deletions(-) diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index e1cf38b..44253bf 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -44,7 +44,6 @@ along with GCC; see the file COPYING3. If not see #include "tree-ssa-dom.h" #include "gimplify.h" #include "tree-cfgcleanup.h" -#include "cfgcleanup.h" #include "omp-low.h" /* This file implements optimizations on the dominator tree. */ @@ -535,17 +534,7 @@ class dominator_base : public gimple_opt_pass unsigned int execute (function *); /* Return true if pass should perform jump threading. */ - virtual bool jump_threading_p (void) { return !sese_mode_p (); } - - /* Return true if pass should visit a series of seses rather than the whole - dominator tree. */ - virtual bool sese_mode_p (void) { return false; } - - /* In sese mode, return true if there's another sese to visit. Return the - sese to visit in SESE_ENTRY and SESE_EXIT. */ - virtual bool get_sese (basic_block *sese_entry ATTRIBUTE_UNUSED, - basic_block *sese_exit ATTRIBUTE_UNUSED) - { gcc_unreachable (); } + virtual bool jump_threading_p (void) { return true; } }; // class dominator_base const pass_data pass_data_dominator = @@ -602,14 +591,11 @@ dominator_base::execute (function *fun) LOOPS_HAVE_PREHEADERS won't be needed here. */ loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES); - if (!sese_mode_p ()) - /* Initialize the value-handle array. */ - threadedge_initialize_values (); + /* Initialize the value-handle array. */ + threadedge_initialize_values (); if (jump_threading_p ()) { - gcc_assert (!sese_mode_p ()); - /* We need accurate information regarding back edges in the CFG for jump threading; this may include back edges that are not part of a single loop. */ @@ -631,29 +617,7 @@ dominator_base::execute (function *fun) const_and_copies, avail_exprs_stack, jump_threading_p ()); - if (!sese_mode_p ()) - walker.walk (fun->cfg->x_entry_block_ptr); - else - { - basic_block sese_entry, sese_exit; - while (get_sese (&sese_entry, &sese_exit)) - { - threadedge_initialize_values (); - avail_exprs_stack->push_marker (); - const_and_copies->push_marker (); - - walker.walk_until (sese_entry, sese_exit, true); - - avail_exprs_stack->pop_to_marker (); - const_and_copies->pop_to_marker (); - threadedge_finalize_values (); - - /* KLUDGE: The dom_walker does not allow unreachable blocks when - starting the walk, and during the dom_opt_dom_walker walk we may - produce unreachable blocks, so we need to clean them up here. */ - delete_unreachable_blocks (); - } - } + walker.walk (fun->cfg->x_entry_block_ptr); { gimple_stmt_iterator gsi; @@ -753,9 +717,8 @@ dominator_base::execute (function *fun) delete avail_exprs_stack; delete const_and_copies; - if (!sese_mode_p ()) - /* Free the value-handle array. */ - threadedge_finalize_values (); + /* Free the value-handle array. */ + threadedge_finalize_values (); return 0; } @@ -789,33 +752,8 @@ public: protected: /* dominator_base methods: */ - virtual bool sese_mode_p (void) { return true; } - virtual bool get_sese (basic_block *sese_entry, basic_block *sese_exit) - { - if (m_regions == NULL) - { - m_regions = BITMAP_ALLOC (NULL); - basic_block bb; - FOR_EACH_BB_FN (bb, cfun) - if (oacc_kernels_region_entry_p (bb, NULL)) - bitmap_set_bit (m_regions, bb->index); - } - - if (bitmap_empty_p (m_regions)) - { - BITMAP_FREE (m_regions); - return false; - } - - unsigned int index = bitmap_first_set_bit (m_regions); - bitmap_clear_bit (m_regions, index); - - *sese_entry = BASIC_BLOCK_FOR_FN (cfun, index); - *sese_exit = get_oacc_kernels_region_exit (*sese_entry); - - return true; - } - + /* Return true if pass should perform jump threading. */ + virtual bool jump_threading_p (void) { return false; } }; // class pass_dominator_oacc_kernels } // anon namespace -- 1.9.1