From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 54786 invoked by alias); 1 Apr 2016 20:08:55 -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 54772 invoked by uid 89); 1 Apr 2016 20:08:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=kindly, H*Ad:D*ru X-HELO: mail-qg0-f44.google.com Received: from mail-qg0-f44.google.com (HELO mail-qg0-f44.google.com) (209.85.192.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 01 Apr 2016 20:08:44 +0000 Received: by mail-qg0-f44.google.com with SMTP id y89so105676543qge.2 for ; Fri, 01 Apr 2016 13:08:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=wOHpDmRjZEA1OmtZTdkmzWO+jJyiHe4HUYtZu2O6urs=; b=GDyDD7bcFjD4RKeBlzbVUD8LAVsniE7h02QVn9uVWogROmxcdd7VU3EV34nuxv0BrP e75/YssmCjmJ22aIukNqBMRTJF4OdVa1bxmIGUkvXv3ThyIRLHN/SIan/iXKNdINwLVb tZifAwtCOL08HbO25slO2tup03oZ6L+Q4i4UBeCURky1ttBUu4Y10K0r6hNBFadOnpDI fQuvVR6qcY5LIXuRPgorWLi9R1K/XNoml7+OfiVMZgHskXULisBFFySRUQ/Ta4ke4jHI tjew+Lgve0GYMB1ukVMWUCGhQMKAbdqtlVPnpUl8LbMRtCzGv1VeS/vPv6frsij8+ZXA xUVA== X-Gm-Message-State: AD7BkJL4oLkGt9HeoTzla8ZcjxOTUGGNkxudrQZ7P+MRucrEUHmnCORO546S2lzghsxMHuJQgVAZmqDBZm7ffeVn MIME-Version: 1.0 X-Received: by 10.140.22.139 with SMTP id 11mr27425824qgn.34.1459541322159; Fri, 01 Apr 2016 13:08:42 -0700 (PDT) Received: by 10.140.22.164 with HTTP; Fri, 1 Apr 2016 13:08:42 -0700 (PDT) In-Reply-To: <56FE9F78.9060304@redhat.com> References: <73dda1b9-478a-931e-0412-01979164f702@ispras.ru> <7447b21e-f0cf-508a-2ba2-2924887fc85e@ispras.ru> <56FE73AB.8020500@foss.arm.com> <56FE9F78.9060304@redhat.com> Date: Fri, 01 Apr 2016 20:08:00 -0000 Message-ID: Subject: Re: Various selective scheduling fixes From: Christophe Lyon To: Jeff Law Cc: Kyrill Tkachov , Andrey Belevantsev , GCC Patches , Alexander Monakov Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2016-04/txt/msg00092.txt.bz2 On 1 April 2016 at 18:19, Jeff Law wrote: > On 04/01/2016 07:26 AM, Christophe Lyon wrote: >> >> On 1 April 2016 at 15:12, Kyrill Tkachov >> wrote: >>> >>> Hi Christophe, Andrey, >>> >>> >>> On 01/04/16 14:09, Christophe Lyon wrote: >>>> >>>> >>>> On 1 April 2016 at 10:54, Andrey Belevantsev wrote: >>>>> >>>>> >>>>> Hi Christophe, >>>>> >>>>> >>>>> On 01.04.2016 10:33, Christophe Lyon wrote: >>>>>> >>>>>> >>>>>> On 31 March 2016 at 16:43, Andrey Belevantsev wrote: >>>>>>> >>>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> On 14.03.2016 12:10, Andrey Belevantsev wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> In this thread I will be posting the patches for the fixed selective >>>>>>>> scheduling PRs (except the one that was already kindly checked in by >>>>>>>> Jeff). >>>>>>>> The patches were tested both on x86-64 and ia64 with the >>>>>>>> following >>>>>>>> combination: 1) the usual bootstrap/regtest, which only utilizes >>>>>>>> sel-sched >>>>>>>> on its own tests, made by default to run on arm/ppc/x86-64/ia64; 2) >>>>>>>> the >>>>>>>> bootstrap/regtest with the second scheduler forced to sel-sched; 3) >>>>>>>> both >>>>>>>> schedulers forced to sel-sched. In all cases everything seemed to >>>>>>>> be >>>>>>>> fine. >>>>>>>> >>>>>>>> Three of the PRs are regressions, the other two showed different >>>>>>>> errors >>>>>>>> across the variety of releases tested by submitters; I think all of >>>>>>>> them >>>>>>>> are appropriate at this stage -- they do not touch anything outside >>>>>>>> of >>>>>>>> selective scheduling except the first patch where a piece of code >>>>>>>> from >>>>>>>> sched-deps.c needs to be refactored into a function to be called >>>>>>>> from >>>>>>>> sel-sched.c. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> I've backported all regression PRs to gcc-5-branch after testing >>>>>>> there >>>>>>> again >>>>>>> with selective scheduling force enabled: PRs 64411, 66660, 69032, >>>>>>> 69102. >>>>>>> The first one was not marked as a regression as such but the test for >>>>>>> PR >>>>>>> 70292, which is duplicate, works for me on gcc 5.1 thus making it a >>>>>>> regression, too. >>>>>>> >>>>>> Hi, >>>>>> >>>>>> The backport for pr69102 shows that the new testcase fails to compile >>>>>> (ICE) >>>>>> when GCC is configured as: >>>>>> >>>>>> --target=arm-none-linux-gnueabihf --with-float=hard --with-mode=arm >>>>>> --with-cpu=cortex-a15 --with-fpu=neon-vfpv4 >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/testsuite/gcc.c-torture/compile/pr69102.c: >>>>>> In function 'foo': >>>>>> >>>>>> >>>>>> >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/testsuite/gcc.c-torture/compile/pr69102.c:21:1: >>>>>> internal compiler error: Segmentation fault >>>>>> 0xa64d15 crash_signal >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/toplev.c:383 >>>>>> 0xfa41d7 autopref_multipass_dfa_lookahead_guard(rtx_insn*, int) >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/haifa-sched.c:5752 >>>>>> 0xa31cd2 invoke_dfa_lookahead_guard >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:4212 >>>>>> 0xa31cd2 find_best_expr >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:4415 >>>>>> 0xa343fb fill_insns >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:5570 >>>>>> 0xa343fb schedule_on_fences >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:7395 >>>>>> 0xa36010 sel_sched_region_2 >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:7533 >>>>>> 0xa36f2a sel_sched_region_1 >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:7575 >>>>>> 0xa36f2a sel_sched_region(int) >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:7676 >>>>>> 0xa37589 run_selective_scheduling() >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sel-sched.c:7752 >>>>>> 0xa14aed rest_of_handle_sched2 >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sched-rgn.c:3647 >>>>>> 0xa14aed execute >>>>>> /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/sched-rgn.c:3791 >>>>>> >>>>>> See >>>>>> >>>>>> >>>>>> http://people.linaro.org/~christophe.lyon/cross-validation/gcc/gcc-5-branch/234625/arm-none-linux-gnueabihf/diff-gcc-rh60-arm-none-linux-gnueabihf-arm-cortex-a15-neon-vfpv4.txt >>>>>> >>>>>> Can you have a look? >>>>> >>>>> >>>>> >>>>> That's because A15 is the only place which enables >>>>> autopref_multipass_dfa_lookahead_guard as the DFA lookahead guard hook. >>>>> But >>>>> autoprefetch modeling doesn't work for selective scheduling, it uses >>>>> haifa >>>>> structures that are not kept up to date during sel-sched. So this is >>>>> not >>>>> supposed to work as soon as the param value for prefetcher lookahead >>>>> depth >>>>> is positive. >>>>> >>>>> The following patch works for me. Could you check it with your >>>>> testing? >>>>> If >>>>> it works fine for you, I would install the patch both for trunk and >>>>> gcc-5. >>>>> It would be great to force sel-sched to be enabled, too. I could do >>>>> that >>>>> but I don't have the hardware or cross-arm target tools at the moment. >>>>> >>>>> * haifa-sched.c (autopref_multipass_dfa_lookahead_guard): >>>>> Disable >>>>> for selective scheduler. >>>>> >>>> It does work for me, it also fixes the other ICE I reported (on >>>> pr69307). >>>> >>>> But note that both tests pass on trunk. >>> >>> >>> >>> This looks to me like PR rtl-optimization/68236 which I fixed on trunk. >>> >> You are right: I've just checked that backporting your patch r230088 does >> fix the problems in the gcc-5 branch. >> >> Can I commit it ? I guess the question is for Jakub? > > Yes, you can commit it to the branch. > OK, done at r234680 Christophe > jeff >