From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nikam.ms.mff.cuni.cz (nikam.ms.mff.cuni.cz [195.113.20.16]) by sourceware.org (Postfix) with ESMTPS id 640C93858004 for ; Fri, 23 Oct 2020 11:26:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 640C93858004 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ucw.cz Authentication-Results: sourceware.org; spf=none smtp.mailfrom=hubicka@kam.mff.cuni.cz Received: by nikam.ms.mff.cuni.cz (Postfix, from userid 16202) id DB1D5281175; Fri, 23 Oct 2020 13:26:17 +0200 (CEST) Date: Fri, 23 Oct 2020 13:26:17 +0200 From: Jan Hubicka To: Martin Jambor Cc: gary@amperecomputing.com, mliska@suse.cz, jakub@redhat.com, gcc-patches@gcc.gnu.org Subject: Re: Materialize clones on demand Message-ID: <20201023112617.GA19894@kam.mff.cuni.cz> References: <20201022094820.GB97578@kam.mff.cuni.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-16.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, 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: Fri, 23 Oct 2020 11:26:24 -0000 > > Bootstrapped/regtested x86_64-linux and also lto-bootstrapped with > > release checking. I plan to commit it after bit more testing. > > > > Honza > > > > gcc/ChangeLog: > > > > 2020-10-22 Jan Hubicka > > > > * cgraph.c (cgraph_node::get_untransformed_body): Perform lazy > > clone materialization. > > * cgraph.h (cgraph_node::materialize_clone): Declare. > > (symbol_table::materialize_all_clones): Remove. > > * cgraphclones.c (cgraph_materialize_clone): Turn to ... > > (cgraph_node::materialize_clone): .. this one; move here > > dumping from symbol_table::materialize_all_clones. > > (symbol_table::materialize_all_clones): Remove. > > * cgraphunit.c (mark_functions_to_output): Clear stmt references. > > (cgraph_node::expand): Initialize bitmaps early; > > do not call execute_all_ipa_transforms if there are no transforms. > > * ipa-inline-transform.c (save_inline_function_body): Fix formating. > > (inline_transform): Materialize all clones before function is modified. > > * ipa-param-manipulation.c (ipa_param_adjustments::modify_call): > > Materialize clone if needed. > > * ipa.c (class pass_materialize_all_clones): Remove. > > (make_pass_materialize_all_clones): Remove. > > * passes.c (execute_all_ipa_transforms): Materialize all clones. > > * passes.def: Remove pass_materialize_all_clones. > > * tree-pass.h (make_pass_materialize_all_clones): Remove. > > > > [...] > > > diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c > > index 05713c28cf0..1e2262789dd 100644 > > --- a/gcc/cgraphunit.c > > +++ b/gcc/cgraphunit.c > > @@ -2298,7 +2299,8 @@ cgraph_node::expand (void) > > bitmap_obstack_initialize (®_obstack); /* FIXME, only at RTL generation*/ > > > > update_ssa (TODO_update_ssa_only_virtuals); > > - execute_all_ipa_transforms (false); > > + if (ipa_transforms_to_apply.exists ()) > > + execute_all_ipa_transforms (false); > > > > Can some function not have ipa_inline among the transforms_to_apply? This is for the case of repeated execution. If you do get_body earlier transforms are already applied. Honza > > Martin