aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2005-09-26 19:12:30 +0000
committerFariborz Jahanian <fjahanian@gcc.gnu.org>2005-09-26 19:12:30 +0000
commit0f086e42e38c7bc7564252c31f04820bc0446bc3 (patch)
tree46f0e79fcf5c8404e6a9cd61a1a136e1bc3a1824 /gcc
parente097b4f15881f2dcd907a8a924582af45d6726e8 (diff)
downloadgcc-0f086e42e38c7bc7564252c31f04820bc0446bc3.zip
gcc-0f086e42e38c7bc7564252c31f04820bc0446bc3.tar.gz
gcc-0f086e42e38c7bc7564252c31f04820bc0446bc3.tar.bz2
re PR target/23847 (Darwin -mpowerpc64 complex ABI breakage)
PR target/23847. Oked by David Edelsohn. From-SVN: r104655
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c21
2 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8499938..4d6dd16 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-23 Fariborz Jahanian <fjahanian@apple.com>
+
+ PR target/23847
+ * config/rs6000/rs6000.c (rs6000_function_value): Parallel pattern
+ for __complex__ double in -mcpu=G5 mode.
+
2005-09-26 Sebastian Pop <pop@cri.ensmp.fr>
PR tree-optimization/23942
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 04493f7..7077b66 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -18786,7 +18786,26 @@ rs6000_function_value (tree valtype, tree func ATTRIBUTE_UNUSED)
GP_ARG_RETURN + 1),
GEN_INT (4))));
}
-
+ if (TARGET_32BIT && TARGET_POWERPC64 && TYPE_MODE (valtype) == DCmode)
+ {
+ return gen_rtx_PARALLEL (DCmode,
+ gen_rtvec (4,
+ gen_rtx_EXPR_LIST (VOIDmode,
+ gen_rtx_REG (SImode, GP_ARG_RETURN),
+ const0_rtx),
+ gen_rtx_EXPR_LIST (VOIDmode,
+ gen_rtx_REG (SImode,
+ GP_ARG_RETURN + 1),
+ GEN_INT (4)),
+ gen_rtx_EXPR_LIST (VOIDmode,
+ gen_rtx_REG (SImode,
+ GP_ARG_RETURN + 2),
+ GEN_INT (8)),
+ gen_rtx_EXPR_LIST (VOIDmode,
+ gen_rtx_REG (SImode,
+ GP_ARG_RETURN + 3),
+ GEN_INT (12))));
+ }
if ((INTEGRAL_TYPE_P (valtype)
&& TYPE_PRECISION (valtype) < BITS_PER_WORD)
|| POINTER_TYPE_P (valtype))