]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: sysv: Don't pass SFmode in varargs in FPRs
authorSegher Boessenkool <segher@kernel.crashing.org>
Mon, 12 Mar 2018 17:37:39 +0000 (18:37 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Mon, 12 Mar 2018 17:37:39 +0000 (18:37 +0100)
commitdf4cfec5540bfb982bfec374346493bed6608fa4
tree08da92b79cac1ae80062cf5a906b0c8ee8daf456
parent37f71cead0f506b45a46d817d38c51d7e7690aac
rs6000: sysv: Don't pass SFmode in varargs in FPRs

This makes the float32-basic.c testcase work on sysv (32-bit Linux).

"float" is promoted to "double" for varargs.  The ABI also only defines
the use of double precision in varargs.  But _Float32 is not promoted.
Since there is no way of passing single-precision float in FPRs we
should pass SFmode in GPRs (or memory) instead.  This is similar to
the 64-bit ABI.

From-SVN: r258454
gcc/ChangeLog
gcc/config/rs6000/rs6000.c