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.
TImode_fix.patch
Description: TImode_fix.patch