The gcc.target/mips/ext_ins.c was failing in little endian mode on MIPS because the compiler is smart enough now to see that 'c' is uninitialized and it can insert the field 'a' into 'c' with a shift and a full store instead of an insert because the store just overwrites unintialized data. I changed the code to force the compiler to preserve the other fields of 'c' and that makes it use the insert instruction in both big and little endian modes.
Tested on mips-mti-elf. OK to checkin? Steve Ellcey sell...@mips.com 2012-10-08 Steve Ellcey <sell...@mips.com> * gcc.target/ext_ins.c: Modify f2 to aviod uninitialized data. diff --git a/gcc/testsuite/gcc.target/mips/ext_ins.c b/gcc/testsuite/gcc.target/mips/ext_ins.c index f0169bc..36f0f3f 100644 --- a/gcc/testsuite/gcc.target/mips/ext_ins.c +++ b/gcc/testsuite/gcc.target/mips/ext_ins.c @@ -18,9 +18,8 @@ NOMIPS16 unsigned int f1 (struct A a) return a.j; } -NOMIPS16 void f2 (int i) +NOMIPS16 struct A f2 (struct A a, int i) { - struct A c; - c.j = i; - func (c); + a.j = i; + return a; }