This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/25768] [3.4 regression] wrong code with inlining at -O2
- From: "sschunck at pdf dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Jan 2006 16:45:01 -0000
- Subject: [Bug c++/25768] [3.4 regression] wrong code with inlining at -O2
- References: <bug-25768-5268@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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