From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthias Klose To: gcc-gnats@gcc.gnu.org Cc: 94701-forwarded@bugs.debian.org, herbert@gondor.apana.org.au Subject: optimization/2960: Duplicate loop conditions even with -Os Date: Sat, 26 May 2001 11:36:00 -0000 Message-id: X-SW-Source: 2001-05/msg00866.html List-Id: >Number: 2960 >Category: optimization >Synopsis: Duplicate loop conditions even with -Os >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: pessimizes-code >Submitter-Id: net >Arrival-Date: Sat May 26 11:36:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: herbert@gondor.apana.org.au >Release: 3.0 20010526 (Debian prerelease) (Debian testing/unstable) >Organization: Debian >Environment: System: Linux smile 2.2.17 #1 Sun Oct 8 19:26:41 MEST 2000 i686 unknown Architecture: i686 host: i386-pc-linux-gnu build: i386-pc-linux-gnu target: i386-pc-linux-gnu configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/usr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as --with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-x --without-included-gettext --disable-checking --enable-threads=posix --enable-java-gc=boehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux >Description: For the following program, int k; extern void b(); int a(int i) { while (k < i) { b(); } } GCC generates this on i386 (gcc -S -Os), a: pushl %ebp movl %esp, %ebp pushl %ebx pushl %ecx movl 8(%ebp), %ebx cmpl %ebx, k jge .L7 .p2align 2 .L5: call b cmpl %ebx, k jl .L5 .L7: popl %edx popl %ebx popl %ebp ret I don't see the reason why it isn't doing: .p2align 2 .L5: cmpl %ebx, k jge .L7 call b jmp .L5 .L7: or jmp .L7 .p2align 2 .L5: call b .L7: cmpl %ebx, k jl .L5 >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: