------- Comment #1 from sschunck at pdf dot de  2006-01-12 16:45 -------
Created an attachment (id=10630)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10630&action=view)
c++ code

the following assembler snipplet shows that the 

movl    $1, (%edx)

is scheduled too early

.globl _ZN1A3fooEP10ybartype_tiS1_RK3xyzPS1_PS2_
        .type   _ZN1A3fooEP10ybartype_tiS1_RK3xyzPS1_PS2_, @function
_ZN1A3fooEP10ybartype_tiS1_RK3xyzPS1_PS2_:
.LFB11:
        pushl   %ebp
.LCFI25:
        movl    %esp, %ebp
.LCFI26:
        subl    $24, %esp
.LCFI27:
        movl    %esi, -8(%ebp)
.LCFI28:
        movl    24(%ebp), %eax
        movl    12(%ebp), %esi
        movl    %edi, -4(%ebp)
.LCFI29:
        movl    16(%ebp), %edi
        movl    %eax, -16(%ebp)
        movl    8(%ebp), %eax
        movl    %ebx, -12(%ebp)
.LCFI30:
        movl    36(%eax), %ebx
        movl    16(%ebx), %eax
        testl   %eax, %eax
        je      .L78
        movl    %eax, %edx
        movl    28(%ebp), %ecx
        cmpl    $2, %edi
        movl    $1, (%edx)
        movl    (%eax), %eax
        movl    %edx, (%ecx)
        movl    %eax, 16(%ebx)
        je      .L85

g++-3.4.4 -v -save-temps -O2 fail_comp.cc



Reading specs from
/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/specs
Configured with: /common/GNU/gcc/gcc-3.4.4/configure i686-pc-solaris2.8
--with-gnu-as --with-as=/usr/local/gnu/gcc-3.4.4-5.8/as --with-gnu-ld
--with-ld=/usr/local/gnu/gcc-3.4.4-5.8/ld --disable-shared
--enable-languages=c++ --srcdir=/common/GNU/gcc/gcc-3.4.4
--prefix=/usr/local/gnu/gcc-3.4.4-5.8
Thread model: posix
gcc version 3.4.4 (20051127 )

/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../libexec/gcc/i686-pc-solaris2.8/3.4.4/cc1plus
-E -quiet -v -iprefix
/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/
/users/sschunck/DEVELOPMENT/source/SiCat_cvs/fail_comp.cc -mtune=pentiumpro -O2
-o fail_comp.ii
ignoring nonexistent directory
"/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../i686-pc-solaris2.8/include"
ignoring duplicate directory
"/usr/local/gnu/gcc-3.4.4-5.8/lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../include/c++/3.4.4"
ignoring duplicate directory
"/usr/local/gnu/gcc-3.4.4-5.8/lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../include/c++/3.4.4/i686-pc-solaris2.8"
ignoring duplicate directory
"/usr/local/gnu/gcc-3.4.4-5.8/lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../include/c++/3.4.4/backward"
ignoring duplicate directory
"/usr/local/gnu/gcc-3.4.4-5.8/lib/gcc/i686-pc-solaris2.8/3.4.4/include"
ignoring nonexistent directory
"/usr/local/gnu/gcc-3.4.4-5.8/lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../i686-pc-solaris2.8/include"
#include "..." search starts here:
#include <...> search starts here:

/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../include/c++/3.4.4

/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../include/c++/3.4.4/i686-pc-solaris2.8

/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/../../../../include/c++/3.4.4/backward

/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/include
 /usr/local/include
 /usr/local/gnu/gcc-3.4.4-5.8/include
 /usr/include
End of search list.

/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../libexec/gcc/i686-pc-solaris2.8/3.4.4/cc1plus
-fpreprocessed fail_comp.ii -quiet -dumpbase fail_comp.cc -mtune=pentiumpro
-auxbase fail_comp -O2 -version -o fail_comp.s
GNU C++ version 3.4.4 (20051127 ) (i686-pc-solaris2.8)
        compiled by GNU C version 3.4.4 (20051127 ).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=131013
 /usr/local/gnu/gcc-3.4.4-5.8/as -V -Qy -s -o fail_comp.o fail_comp.s
GNU assembler version 2.13.2 (i386-pc-solaris2.6) using BFD version 2.13.2

/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../libexec/gcc/i686-pc-solaris2.8/3.4.4/collect2
-V -Y P,/usr/ccs/lib:/usr/lib -Qy
/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/crt1.o
/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/crti.o
/usr/ccs/lib/values-Xa.o
/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/crtbegin.o
-L/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4
-L/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc
-L/usr/local/gnu/gcc-3.4.4-5.8/lib/gcc/i686-pc-solaris2.8/3.4.4 -L/usr/ccs/bin
-L/usr/ccs/lib
-L/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/../../..
-L/usr/local/gnu/gcc-3.4.4-5.8/lib/gcc/i686-pc-solaris2.8/3.4.4/../../..
fail_comp.o -lstdc++ -lm -lgcc -lc -lgcc
/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/crtend.o
/local/SunOS-i386-5.8/gnu/gcc-3.4.4-5.8/bin/../lib/gcc/i686-pc-solaris2.8/3.4.4/crtn.o
GNU ld version 2.13.2
  Supported emulations:
   elf_i386_ldso
   elf_i386


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25768

Reply via email to