diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8499938c80b7b561b8272de70e7d2453c9f1634c..4d6dd1646d97794f2fcb829b9317698d60ea5760 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 04493f7d66041ac2a6e5a99c6f6804d8e3bfae98..7077b6610038a5bf2a22314b8602e2536fd8b704 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))