http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59762
Bug ID: 59762 Summary: func-vararg-mixed.c fails on PowerPC starting with revision 204079 Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: pthaugen at gcc dot gnu.org CC: bergner at gcc dot gnu.org, dje at gcc dot gnu.org, vmakarov at gcc dot gnu.org Host: powerpc64-linux Target: powerpc64-linux Build: powerpc64-linux Testcase c-c++-common/dfp/func-vararg-mixed.c started failing on PowerPC for -m32 at stated revision. Problem looks to be that Decimal32 values are now loaded into the high word of the FPR as opposed to the low word where they should be. Simple example to demonstrate new generated code: [pthaugen@igoo ~/temp]$ cat dfp.c void bar(_Decimal32); void foo () { bar(3.0df); } [pthaugen@igoo ~/temp]$ ~/install/gcc/temp/bin/gcc -m32 -O0 dfp.c -S >From .s file... lwz 10,.LC0@l(9) stw 10,24(31) stw 11,28(31) lfd 0,24(31) fmr 1,0 bl bar Note that FPR0/1 have the Decimal32 value in the high word, and garbage in the low word. Other tests that started failing in same timeframe and I suspect are also related: FAIL: gcc.dg/compat/scalar-by-value-dfp c_compat_x_tst.o-c_compat_y_tst.o execute FAIL: gcc.dg/compat/scalar-return-dfp c_compat_x_tst.o-c_compat_y_tst.o execute FAIL: c-c++-common/dfp/func-vararg-alternate-d32.c execution test FAIL: c-c++-common/dfp/func-vararg-dfp.c execution test FAIL: gcc.target/powerpc/ppc32-abi-dfp-1.c execution test