From patchwork Wed Jul 30 15:20:02 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bingfeng Mei X-Patchwork-Id: 374938 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 29DD5140188 for ; Thu, 31 Jul 2014 01:20:16 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:references:in-reply-to :content-type:content-transfer-encoding:mime-version; q=dns; s= default; b=VNmkcRMPiH2WZQPMAOtijir5IYRCVYB5ZNlPF6+cEDkMYTagORC/U zmPSp2dMJzSXtkrVaq+EV0rok4eFigMcemXEmXTrpcu1I4rdr8Ww9eqBu1qzrVmF f4x6Oix1u8CemrmzJ70VnB6TKe6lJeGWzDtm5yuWucxuXO/PusjqLs= 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:from :to:cc:subject:date:message-id:references:in-reply-to :content-type:content-transfer-encoding:mime-version; s=default; bh=WvHg1L+ivBlWDV1z5EQxa4vzo5Y=; b=h8n82DqwOgaARYf9q+Ey1P3QdChk FW4uoexFuE0PPbE58qWLcfMN/uY6YtfZLy2pj0V7fwfi87k5G+YVz52XmPLoPDge iFkO4WEYkYc8F97HNyRRamCG+Mg77A8ql5iVVj/3MU5O1nIPi27KuD9ZPXFHZV2i irFAYII3V4M2SYc= Received: (qmail 21918 invoked by alias); 30 Jul 2014 15:20:08 -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 21902 invoked by uid 89); 30 Jul 2014 15:20:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL, BAYES_00, MIME_BASE64_BLANKS, RP_MATCHES_RCVD, SUBJ_ALL_CAPS autolearn=no version=3.3.2 X-HELO: mail-gw1-out.broadcom.com Received: from mail-gw1-out.broadcom.com (HELO mail-gw1-out.broadcom.com) (216.31.210.62) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 30 Jul 2014 15:20:04 +0000 Received: from irvexchcas06.broadcom.com (HELO IRVEXCHCAS06.corp.ad.broadcom.com) ([10.9.208.53]) by mail-gw1-out.broadcom.com with ESMTP; 30 Jul 2014 08:59:32 -0700 Received: from SJEXCHCAS07.corp.ad.broadcom.com (10.16.203.16) by IRVEXCHCAS06.corp.ad.broadcom.com (10.9.208.53) with Microsoft SMTP Server (TLS) id 14.3.174.1; Wed, 30 Jul 2014 08:20:02 -0700 Received: from SJEXCHMB13.corp.ad.broadcom.com ([fe80::9d40:1e86:a7dc:c46a]) by SJEXCHCAS07.corp.ad.broadcom.com ([::1]) with mapi id 14.03.0174.001; Wed, 30 Jul 2014 08:20:03 -0700 From: Bingfeng Mei To: Richard Biener CC: Andi Kleen , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH] PR61868 Date: Wed, 30 Jul 2014 15:20:02 +0000 Message-ID: References: In-Reply-To: MIME-Version: 1.0 X-IsSubscribed: yes Yes, that fix is better. Here are updated patches. LTO-bootstrapped and tested. OK? Bingfeng > -----Original Message----- > From: Richard Biener [mailto:richard.guenther@gmail.com] > Sent: 30 July 2014 14:08 > To: Bingfeng Mei > Cc: Andi Kleen; gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] PR61868 > > On Wed, Jul 30, 2014 at 2:48 PM, Bingfeng Mei wrote: > > On the second thought, maybe the change should be made in > set_random_seed. Otherwise, init_random_seed is invoked every time > get_random_seed get called (not sure how often). What do you think? > > > > const char * > > set_random_seed (const char *val) > > { > > const char *old = flag_random_seed; > > flag_random_seed = val; > > + init_random_seed (); > > return old; > > } > > I think it makes more sense to move the if (flag_random_seed) > code from init_random_seed inline here as init_random_seed is > never called with flag_random_set == true. > > Richard. > > > Bingfeng > > > >> -----Original Message----- > >> From: Richard Biener [mailto:richard.guenther@gmail.com] > >> Sent: 30 July 2014 10:43 > >> To: Bingfeng Mei > >> Cc: Andi Kleen; gcc-patches@gcc.gnu.org > >> Subject: Re: [PATCH] PR61868 > >> > >> On Wed, Jul 30, 2014 at 10:52 AM, Bingfeng Mei > wrote: > >> > Yes, opts-global.c fills flag_random_seed with string passed in > >> command line. But init_random_seed in toplev.c is the one that > processes > >> the flag and set random_seed variable, which is returned by > >> get_random_seed function. > >> > >> Err, I meant opts-global.c:handle_common_deferred_options > >> > >> > By default, my configuration enables LTO. How to test LTO bootstrap? > >> > >> configure with --with-build-config=bootstrap-lto (and reduce the > >> set of languages to c,c++ to get a sane bootstrap time). > >> > >> Richard. > >> > >> > Bingfeng > >> > > >> >> -----Original Message----- > >> >> From: Richard Biener [mailto:richard.guenther@gmail.com] > >> >> Sent: 30 July 2014 08:47 > >> >> To: Bingfeng Mei; Andi Kleen > >> >> Cc: gcc-patches@gcc.gnu.org > >> >> Subject: Re: [PATCH] PR61868 > >> >> > >> >> On Tue, Jul 29, 2014 at 3:01 PM, Bingfeng Mei > >> wrote: > >> >> > Hi, > >> >> > Please find the patches for pr61868. The problem is that even > with > >> - > >> >> frandom-seed gcc always uses 0 instead of specified number/string > for > >> >> places such as lto section names. init_random_seed is never called > >> with > >> >> -frandom-seed. Bootstrapped and tested on x86-64. OK for trunk? > >> >> > >> >> Hmm, but -frandom-seed= is honored by opts.c calling > set_random_seed? > >> >> > >> >> Andi, wasn't this used to support partial linking of LTO objects? > >> Thus, > >> >> this shortcut was on purpose? Otherwise passing -frandom-seed to > >> >> LTO would break that? > >> >> > >> >> Bingfeng, did you test if LTO bootstrap still works after this > patch? > >> >> > >> >> Thanks, > >> >> Richard. > >> >> > >> >> > Thanks, > >> >> > Bingfeng Mei > >> >> > > >> >> > > >> >> > > =================================================================== > >> >> > --- ChangeLog (revision 213152) > >> >> > +++ ChangeLog (working copy) > >> >> > @@ -1,3 +1,9 @@ > >> >> > +2014-07-29 Bingfeng Mei > >> >> > + > >> >> > + PR lto/61868 > >> >> > + * toplev.c (init_random_seed): Generate random seed when > >> >> > + flag_random_seed is specified. > >> >> > + > >> >> > 2014-07-28 Jan Hubicka > >> >> > > >> >> > * cgraph.c (cgraph_node::create_indirect_edge): Copy > >> >> speculative data. > >> >> > Index: toplev.c > >> >> > > =================================================================== > >> >> > --- toplev.c (revision 213152) > >> >> > +++ toplev.c (working copy) > >> >> > @@ -301,7 +301,7 @@ init_random_seed (void) > >> >> > HOST_WIDE_INT > >> >> > get_random_seed (bool noinit) > >> >> > { > >> >> > - if (!flag_random_seed && !noinit) > >> >> > + if (!noinit) > >> >> > init_random_seed (); > >> >> > return random_seed; > >> >> > } > >> >> > Index: testsuite/ChangeLog > >> >> > > =================================================================== > >> >> > --- testsuite/ChangeLog (revision 213152) > >> >> > +++ testsuite/ChangeLog (working copy) > >> >> > @@ -1,3 +1,8 @@ > >> >> > +2014-07-29 Bingfeng Mei > >> >> > + > >> >> > + PR lto/61868 > >> >> > + * gcc.dg/pr61868.c: New test. > >> >> > + > >> >> > 2014-07-28 Richard Biener > >> >> > > >> >> > PR rtl-optimization/61801 > >> >> > Index: testsuite/gcc.dg/pr61868.c > >> >> > > =================================================================== > >> >> > --- testsuite/gcc.dg/pr61868.c (revision 0) > >> >> > +++ testsuite/gcc.dg/pr61868.c (revision 0) > >> >> > @@ -0,0 +1,9 @@ > >> >> > +/* { dg-do compile } */ > >> >> > +/* { dg-options "-flto -frandom-seed=0x12345" } */ > >> >> > +extern int foo (int); > >> >> > +int main () > >> >> > +{ > >> >> > + foo (100); > >> >> > + return 0; > >> >> > +} > >> >> > +/* { dg-final { scan-assembler "\.gnu\.lto.*.12345" } } */ > >> >> > Index: ChangeLog =================================================================== --- ChangeLog (revision 213152) +++ ChangeLog (working copy) @@ -1,3 +1,10 @@ +2014-07-29 Bingfeng Mei + + PR lto/61868 + * toplev.c (init_random_seed): Move piece of code never called to + set_random_seed. + (set_random_seed): see above. + 2014-07-28 Jan Hubicka * cgraph.c (cgraph_node::create_indirect_edge): Copy speculative data. Index: toplev.c =================================================================== --- toplev.c (revision 213152) +++ toplev.c (working copy) @@ -282,16 +282,7 @@ init_local_tick (void) static void init_random_seed (void) { - if (flag_random_seed) - { - char *endp; - - /* When the driver passed in a hex number don't crc it again */ - random_seed = strtoul (flag_random_seed, &endp, 0); - if (!(endp > flag_random_seed && *endp == 0)) - random_seed = crc32_string (0, flag_random_seed); - } - else if (!random_seed) + if (!random_seed) random_seed = local_tick ^ getpid (); /* Old racey fallback method */ } @@ -314,6 +305,15 @@ set_random_seed (const char *val) { const char *old = flag_random_seed; flag_random_seed = val; + if (flag_random_seed) + { + char *endp; + + /* When the driver passed in a hex number don't crc it again */ + random_seed = strtoul (flag_random_seed, &endp, 0); + if (!(endp > flag_random_seed && *endp == 0)) + random_seed = crc32_string (0, flag_random_seed); + } return old; } Index: testsuite/ChangeLog =================================================================== --- testsuite/ChangeLog (revision 213152) +++ testsuite/ChangeLog (working copy) @@ -1,3 +1,8 @@ +2014-07-29 Bingfeng Mei + + PR lto/61868 + * gcc.dg/pr61868.c: New test. + 2014-07-28 Richard Biener PR rtl-optimization/61801 Index: testsuite/gcc.dg/pr61868.c =================================================================== --- testsuite/gcc.dg/pr61868.c (revision 0) +++ testsuite/gcc.dg/pr61868.c (revision 0) @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-flto -frandom-seed=0x12345" } */ +extern int foo (int); +int main () +{ + foo (100); + return 0; +} +/* { dg-final { scan-assembler "\.gnu\.lto.*.12345" } } */