http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57468

            Bug ID: 57468
           Summary: [4.9 Regression] 26% performance drop on important
                    benchmark after r199298.
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ysrumyan at gmail dot com

We found significant performance drop after changes in lra phase, which can be
demonstrated on example from 
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55342

I will attach test-case.
And we can see that redundant spill/reload was generated for inner loop that
leads to performance degradation:

.L4:
    movl    %esi, %edx
    addl    $4, %eax
    subl    %edx, %ebx
    subl    %edx, %ecx
    movzbl    (%esp), %edx
    movb    %cl, -3(%eax)
    movl    %esi, %ecx
    movl    %esi, (%esp)  <<-- redundant spill
    movb    %bl, -4(%eax)
    movzbl    (%esp), %ebx  <<-- redundant fill
    subl    %ecx, %edx
    movb    %dl, -2(%eax)
    cmpl    %ebp, 4(%esp)
    movb    %bl, -1(%eax)
    je    .L1

Reply via email to