This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Various selective scheduling fixes


On 1 April 2016 at 15:12, Kyrill Tkachov <kyrylo.tkachov@foss.arm.com> wrote:
> Hi Christophe, Andrey,
>
>
> On 01/04/16 14:09, Christophe Lyon wrote:
>>
>> On 1 April 2016 at 10:54, Andrey Belevantsev <abel@ispras.ru> wrote:
>>>
>>> Hi Christophe,
>>>
>>>
>>> On 01.04.2016 10:33, Christophe Lyon wrote:
>>>>
>>>> On 31 March 2016 at 16:43, Andrey Belevantsev <abel@ispras.ru> 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?


> Kyrill
>
>
>> Christophe
>>
>>
>>> Best,
>>> Andrey
>>>
>>>
>>>> Christophe
>>>>
>>>>> Andrey
>>>>>
>>>>>> Andrey
>>>>>
>>>>>
>>>>>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]