From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11291 invoked by alias); 8 Nov 2007 11:39:48 -0000 Received: (qmail 11232 invoked by uid 48); 8 Nov 2007 11:39:36 -0000 Date: Thu, 08 Nov 2007 11:39:00 -0000 Subject: [Bug c/34027] New: [4.3 regression] -Os code size nearly doubled X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "bunk at stusta dot de" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2007-11/txt/msg00667.txt.bz2 PR32044 makes it for months impossible to compile the Linux kernel with gcc 4.3, but I'll leave the discussions who's technically at fault (and whether gcc 4.3 will ever be able to compile the Linux kernel) to the people who know more about such things. But the fact that the code emitted with -Os used is nearly twice as big that's a regression in gcc. Test case: $ cat test.c unsigned long long foobar(unsigned long long ns) { while(ns >= 1000000000L) ns -= 1000000000L; return ns; } $ gcc --version gcc (GCC) 4.2.3 20071014 (prerelease) (Debian 4.2.2-3) ... $ gcc -Os test.c -c -o old-gcc.o $ /usr/local/DIR/gcc-svn20071108/bin/gcc -Os test.c -c -o new-gcc.o $ objdump -D old-gcc.o old-gcc.o: file format elf32-i386 Disassembly of section .text: 00000000 : 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 8b 45 08 mov 0x8(%ebp),%eax 6: 8b 55 0c mov 0xc(%ebp),%edx 9: eb 08 jmp 13 b: 05 00 36 65 c4 add $0xc4653600,%eax 10: 83 d2 ff adc $0xffffffff,%edx 13: 83 fa 00 cmp $0x0,%edx 16: 77 f3 ja b 18: 3d ff c9 9a 3b cmp $0x3b9ac9ff,%eax 1d: 77 ec ja b 1f: 5d pop %ebp 20: c3 ret Disassembly of section .comment: ... $ objdump -D new-gcc.o new-gcc.o: file format elf32-i386 Disassembly of section .text: 00000000 : 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 57 push %edi 4: 56 push %esi 5: 53 push %ebx 6: bb 00 36 65 c4 mov $0xc4653600,%ebx b: 83 ec 0c sub $0xc,%esp e: 8b 7d 0c mov 0xc(%ebp),%edi 11: 8b 75 08 mov 0x8(%ebp),%esi 14: 6a 00 push $0x0 16: 68 00 ca 9a 3b push $0x3b9aca00 1b: 57 push %edi 1c: 56 push %esi 1d: e8 fc ff ff ff call 1e 22: 83 c4 10 add $0x10,%esp 25: 69 ca 00 36 65 c4 imul $0xc4653600,%edx,%ecx 2b: 29 c1 sub %eax,%ecx 2d: f7 e3 mul %ebx 2f: 01 f0 add %esi,%eax 31: 8d 14 11 lea (%ecx,%edx,1),%edx 34: 11 fa adc %edi,%edx 36: 8d 65 f4 lea -0xc(%ebp),%esp 39: 5b pop %ebx 3a: 5e pop %esi 3b: 5f pop %edi 3c: 5d pop %ebp 3d: c3 ret Disassembly of section .comment: ... $ -- Summary: [4.3 regression] -Os code size nearly doubled Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bunk at stusta dot de GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34027