Hi,

I observed the following failure on arm big-endian: 

FAIL: tmpdir-g++.dg-struct-layout-1/t024 cp_compat_x_tst.o compile,  (internal 
compiler error)

The compiler is configured as:

armeb-montavista-linux-gnueabi-gcc -v

Using built-in specs.
COLLECT_GCC=./armeb-tools/bin/armeb-montavista-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/manjunath/NCDtools/mips/toolchain/armeb-tools/bin/../libexec/gcc/armeb-montavista-linux-gnueabi/4.7.0/lto-wrapper
Target: armeb-montavista-linux-gnueabi
Configured with: 
/home/manjunath/NCDtools/mips/toolchain/scripts/../src/configure 
--disable-fixed-point --without-ppl --without-python --disable-werror 
--enable-checking --with-sysroot 
--with-local-prefix=/home/manjunath/NCDtools/mips/toolchain/scripts/../armeb-tools/armeb-montavista-linux-gnueabi/sys-root
 --disable-sim --enable-symvers=gnu --enable-__cxa_atexit --with-arch=armv7-a 
--with-fpu=vfpv3-d16 --with-float=hard --with-tune=cortex-a9 
--target=armeb-montavista-linux-gnueabi --enable-languages=c,c++ 
--prefix=/home/manjunath/NCDtools/mips/toolchain/scripts/../armeb-tools
Thread model: posix
gcc version 4.7.0 () 


Debugging shows that ITmode is not handled by arm_return_in_msb

debug snip ...
{{{
void test2001() void test2002() void test2003() void test2004() void test2005()
Breakpoint 1, shift_return_value (mode=TImode, left_p=0 '\000', 
value=0x7ffff033b380)
    at /home/manjunath/NCDtools/mips/toolchain/scripts/../src/gcc/calls.c:2127
2127      gcc_assert (REG_P (value) && HARD_REGISTER_P (value));

(gdb) p mode
$1 = TImode

(gdb) p left_p
$2 = 0 '\000'

(gdb) p debug_rtx(value)
(parallel:TI [
        (expr_list:REG_DEP_TRUE (reg:DI 63 s0)
            (const_int 0 [0]))
        (expr_list:REG_DEP_TRUE (reg:DI 65 s2)
            (const_int 8 [0x8]))
    ])
$3 = void
}}}

I have attached the patch which fixes the above problem, kindly review the patch
and accept it for mainline.


Regards,
Manjunath S Matti.

Attachment: TImode_fix.patch
Description: TImode_fix.patch

Reply via email to