> GCC 3.4.4 RC1 is available here: > > ftp://gcc.gnu.org/pub/gcc/prerelease-3.4.4-20050510/
I downloaded and rebuild for ia32 with latest pre binutils on my project and noticed an increase of size. I am compiling with -Os because size is very important in my case - so I invertigated by looking at the differences. There seem to be some optimisation missing in between 3.4.3 and 3.4.4. I got some assembler code like: movl 48(%esp), %eax movl %eax, 48(%esp) movl 48(%esp), %eax testl %eax, %eax To reproduce: download and untar gujin-1.0.tar.gz from sourceforge cd gujin (if needed) download binutils and gcc in parrent directory and "make toolchain" make dep disk.s vi +947 disk.s I also noted dead stores: vi +1201 disk.s movl 12(%esp), %eax movb $8, %dh movzwl 172(%ecx), %eax Strange reloads: vi +217 disk.s movw 10(%esp), %ax andl $63, %eax movw 10(%esp), %dx movw %ax, 120(%esi) movw 10(%esp), %ax sall $2, %eax And strange way to load constant into registers: vi +480 disk.s movl $100000, 20(%esp) sall $16, %ecx andl $65535, %edx movl 20(%esp), %eax orl %ecx, %edx movb $-127, %al movl 20(%esp), %ecx Some of those problem may also exist in GCC-4.0 because this version (and the 4.1 I tested) gives me an increase of 60% of the code size compared to 3.4.3. Thanks for any information, Etienne.