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