> 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.


Reply via email to