diff options
author | Michael Meissner <meissner@linux.vnet.ibm.com> | 2016-07-19 03:31:48 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 2016-07-19 03:31:48 +0000 |
commit | a8f7a89526b5fb1b17a6972b943fcbd8c4d0475a (patch) | |
tree | 9345e6cb30397421d5a3ef7234f62044e1181b10 /gcc/config | |
parent | 40d9a67476003291aad8127a51aaece2b6862fac (diff) | |
download | gcc-a8f7a89526b5fb1b17a6972b943fcbd8c4d0475a.zip gcc-a8f7a89526b5fb1b17a6972b943fcbd8c4d0475a.tar.gz gcc-a8f7a89526b5fb1b17a6972b943fcbd8c4d0475a.tar.bz2 |
re PR target/71493 (accidental ABI change for structure return on PowerPC)
[gcc]
2016-07-18 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/71493
* config/rs6000/rs6000.c (rs6000_function_value): Fix
unintentional System V.4 structure return breakage for structures
with a single floating point element.
[gcc/testsuite]
2016-07-18 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/71493
* gcc.target/powerpc/pr71493-1.c: New test.
* gcc.target/powerpc/pr71493-2.c: Likewise.
From-SVN: r238454
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 63655b1..6fe94d5 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -35467,7 +35467,8 @@ rs6000_function_value (const_tree valtype, if (DECIMAL_FLOAT_MODE_P (mode) && TARGET_HARD_FLOAT && TARGET_FPRS) /* _Decimal128 must use an even/odd register pair. */ regno = (mode == TDmode) ? FP_ARG_RETURN + 1 : FP_ARG_RETURN; - else if (SCALAR_FLOAT_MODE_NOT_VECTOR_P (mode) && TARGET_HARD_FLOAT && TARGET_FPRS + else if (SCALAR_FLOAT_TYPE_P (valtype) && TARGET_HARD_FLOAT && TARGET_FPRS + && !FLOAT128_VECTOR_P (mode) && ((TARGET_SINGLE_FLOAT && (mode == SFmode)) || TARGET_DOUBLE_FLOAT)) regno = FP_ARG_RETURN; else if (TREE_CODE (valtype) == COMPLEX_TYPE |