http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46471
Summary: Worse register regalloc leads to bigger code at -Os
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: [email protected]
ReportedBy: [email protected]
Created attachment 22391
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22391
Preprocessed testcase
Another CSiBE regression I noticed in merged_1v_upsample. Gcc 4.3 gets around
w/o stack frame:
0000000000000018 <merged_1v_upsample>:
18: 41 54 push %r12
1a: 49 89 d4 mov %rdx,%r12
1d: 53 push %rbx
1e: 4c 89 cb mov %r9,%rbx
21: 48 83 ec 08 sub $0x8,%rsp
25: 41 8b 09 mov (%r9),%ecx
28: 48 8b 87 60 02 00 00 mov 0x260(%rdi),%rax
2f: 8b 12 mov (%rdx),%edx
31: 49 8d 0c c8 lea (%r8,%rcx,8),%rcx
35: ff 50 18 callq *0x18(%rax)
38: ff 03 incl (%rbx)
3a: 41 ff 04 24 incl (%r12)
3e: 58 pop %rax
3f: 5b pop %rbx
40: 41 5c pop %r12
42: c3 retq
While current mainline produce:
0000000000000018 <merged_1v_upsample>:
18: 53 push %rbx
19: 48 89 d3 mov %rdx,%rbx
1c: 48 83 ec 10 sub $0x10,%rsp
20: 41 8b 11 mov (%r9),%edx
23: 48 8b 87 60 02 00 00 mov 0x260(%rdi),%rax
2a: 4c 89 4c 24 08 mov %r9,0x8(%rsp)
2f: 49 8d 0c d0 lea (%r8,%rdx,8),%rcx
33: 8b 13 mov (%rbx),%edx
35: ff 50 18 callq *0x18(%rax)
38: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9
3d: 41 ff 01 incl (%r9)
40: ff 03 incl (%rbx)
42: 58 pop %rax
43: 5a pop %rdx
44: 5b pop %rbx
45: c3 retq