From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 124620 invoked by alias); 9 Dec 2015 10:45:30 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 123807 invoked by uid 89); 9 Dec 2015 10:45:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qg0-f47.google.com Received: from mail-qg0-f47.google.com (HELO mail-qg0-f47.google.com) (209.85.192.47) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 09 Dec 2015 10:45:28 +0000 Received: by qgeb1 with SMTP id b1so71764251qge.1 for ; Wed, 09 Dec 2015 02:45:26 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.13.242.133 with SMTP id b127mr5141830ywf.280.1449657926495; Wed, 09 Dec 2015 02:45:26 -0800 (PST) Received: by 10.37.93.11 with HTTP; Wed, 9 Dec 2015 02:45:26 -0800 (PST) In-Reply-To: <5667E6EE.1060802@redhat.com> References: <56667585.5040307@redhat.com> <5667E6EE.1060802@redhat.com> Date: Wed, 09 Dec 2015 10:45:00 -0000 Message-ID: Subject: Re: [RFA] [PATCH] [PR tree-optimization/68619] Avoid direct cfg cleanups in tree-ssa-dom.c [1/3] From: Richard Biener To: Jeff Law Cc: gcc-patches Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2015-12/txt/msg00977.txt.bz2 On Wed, Dec 9, 2015 at 9:31 AM, Jeff Law wrote: > On 12/08/2015 07:27 AM, Richard Biener wrote: >>> >>> >>> I wonder if it makes more sense to integrate this with the >>> domwalker itself. Add a constructor flag to it and do everything >>> in itself. By letting the before_dom_children return a taken edge >>> (or NULL if unknown) it can drive the outgoing edge marking. And >>> the domwalk worker would simply not recurse to dom children for >>> unreachable blocks. >> >> >> So interface-wise do > > [ ... ] > Close :-) > > If skip_unreachable_blocks is true, then we want the walker to initialize > EDGE_EXECUTABLE automatically. So we drop the member initialization and > constructor body from domwalk.h and instead have a ctor in domwalk.c where > we can initialize the private members and set EDGE_EXECUTABLE as needed. > > My first iteration let the clients clear EDGE_EXECUTABLE as they found > conditionals that could be optimized. That was pretty clean and localized > in sccvn & dom. > > If we have the before_dom_children return the taken edge, then we have to > twiddle all the clients due to the api change in before_dom_children. . > There's ~18 in total, so it's not too bad. > > 2 of the 18 clearly need to use the skip_unreachable_blocks capability (dom > and sccvn). 2 others might be able to use it (tree-ssa-pre.c and > tree-ssa-propagate.c) I converted dom and sccvn, but not pre and the > generic propagation engine. > > I can submit the iteration which lets clients clear EDGE_EXECUTABLE, or the > iteration where the clients return the taken edge (or NULL) from the > before_dom_children callback. > > Either is fine with me, so if you have a preference, let me know. Return the taken edge. Richard. > jeff