This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/22563] New: performance regression for gcc newer than 2.95
- From: "danalis at cis dot udel dot edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Jul 2005 19:13:05 -0000
- Subject: [Bug rtl-optimization/22563] New: performance regression for gcc newer than 2.95
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
We ran bench++ to look for c++ samples that ran slower at -O3 with
gcc-[34].x than with gcc-2.95. We're attaching one such case,
minimized as far as we can (so it might not be testing the same
thing as the original code). It consists of a simple function that
accesses bitfields, called in a loop from main.
gcc-3.4.3/gcc-4.0.0/gcc-4.1-20050627 all produce binaries that seem
to be ten times slower on this than those produced by gcc-2.95.3.
All the compilers happily inlined
the function, which is fine.
Here's the code from the older compiler:
.L12:
movb $86,%dl
movb %dl,b_rec
movb %dl,%al
andb $7,%al
cmpb $6,%al
je .L14
call abort
.align 4
.L14:
andb $240,%dl
cmpb $80,%dl
je .L11
call abort
.align 4
.L11:
decl %ecx
testl %ecx,%ecx
jg .L12
And here's code from gcc-4.1-20050625:
jmp .L16
.p2align 4,,7
.L27:
andb $-16, %dl
cmpb $80, %dl
jne .L25
decl %ebx
je .L26
.L16:
movl %ecx, %eax
andl $-8, %eax
orl $6, %eax
movl %eax, b_rec
andb $-9, b_rec
movl b_rec, %eax
andl $-241, %eax
orl $80, %eax
movl %eax, b_rec
movl %eax, %ecx
movzbl b_rec, %edx
movb %dl, %al
andb $7, %al
cmpb $6, %al
je .L27
We'll attach the preprocessed source.
--
Summary: performance regression for gcc newer than 2.95
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danalis at cis dot udel dot edu
CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: i686-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22563