I have confirmed this bug against 4.1.1 and 4.1.2 (4.1-20070115).

The attached program incorrectly sees h->b as 0x1000, instead of 0x0010 as it
should.  I'm not sure if this is an endianness issue, but it only happens if
the stack is fairly complex.  If I uncomment the align attribute, the program
outputs the correct value.  My target CPU is a Marvell Feroceon, but any
arm926ejs should see this problem.

The toolchain was built using crosstool, using gcc-4.1.x and glibc 2.5.  I can
supply anything necessary to build the toolchain.

arm-soft-oabi.dat:
KERNELCONFIG=`pwd`/arm-tls-oabi.config
TARGET=arm-926ejs-linux-gnu
GCC_EXTRA_CONFIG='--with-cpu=arm926ej-s --with-float=soft
"--enable-cxx-flags=-mcpu=arm926ej-s -msoft-float"'
GLIBC_EXTRA_CONFIG='--without-fp'
TARGET_CFLAGS=-O

gcc-4.1.x-glibc-2.5-nptl.dat:
BINUTILS_DIR=binutils-2.17.50.0.9
GCC_DIR=gcc-4.1-20070115
GLIBC_DIR=glibc-2.5
GLIBCPORTS_FILENAME=glibc-ports-2.5
GLIBC_ADDON_OPTIONS=ports,nptl
GDB_DIR=gdb-6.5
LINUX_DIR=linux-2.6.19.2


-- 
           Summary: Deeply inlined static functions break stack creation
           Product: gcc
           Version: 4.1.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sqrammi at hotmail dot com
 GCC build triplet: arm-linux-gnu
  GCC host triplet: i686-linux-gnu
GCC target triplet: arm-linux-gnu


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

Reply via email to