diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2005-09-26 19:12:30 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@gcc.gnu.org> | 2005-09-26 19:12:30 +0000 |
commit | 0f086e42e38c7bc7564252c31f04820bc0446bc3 (patch) | |
tree | 46f0e79fcf5c8404e6a9cd61a1a136e1bc3a1824 /gcc | |
parent | e097b4f15881f2dcd907a8a924582af45d6726e8 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 21 |
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)) |