From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 106122 invoked by alias); 1 Apr 2016 08:55:57 -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 106104 invoked by uid 89); 1 Apr 2016 08:55:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=01.04.2016, 01042016, modeling, kindly X-HELO: mail.ispras.ru Received: from mail.ispras.ru (HELO mail.ispras.ru) (83.149.199.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 01 Apr 2016 08:55:46 +0000 Received: from [10.10.3.52] (pluton2.ispras.ru [83.149.199.44]) by mail.ispras.ru (Postfix) with ESMTPSA id AFAA254007B; Fri, 1 Apr 2016 11:55:43 +0300 (MSK) Subject: Re: Various selective scheduling fixes To: Christophe Lyon References: <73dda1b9-478a-931e-0412-01979164f702@ispras.ru> Cc: GCC Patches , Alexander Monakov From: Andrey Belevantsev Message-ID: <7447b21e-f0cf-508a-2ba2-2924887fc85e@ispras.ru> Date: Fri, 01 Apr 2016 08:55:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------C1EBF871D2BE08CE3F228738" X-IsSubscribed: yes X-SW-Source: 2016-04/txt/msg00007.txt.bz2 This is a multi-part message in MIME format. --------------C1EBF871D2BE08CE3F228738 Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 7bit Content-length: 4211 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. Best, Andrey > > Christophe > >> Andrey >> >>> >>> Andrey >> >> --------------C1EBF871D2BE08CE3F228738 Content-Type: text/x-patch; name="disable-autopref-sel-sched.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="disable-autopref-sel-sched.diff" Content-length: 437 diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index ad2450b..c790830 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -5691,6 +5691,10 @@ autopref_multipass_dfa_lookahead_guard (rtx_insn *insn1, int ready_index) { int r = 0; + /* Autoprefetcher modeling is not supported by selective scheduler. */ + if (sel_sched_p ()) + return 0; + if (PARAM_VALUE (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH) <= 0) return 0; --------------C1EBF871D2BE08CE3F228738--