From 8d079cfe8938b0d7bd21a6d6f0da89a8a7927a0b Mon Sep 17 00:00:00 2001 From: fjahanian Date: Mon, 23 Feb 2004 18:40:46 +0000 Subject: [PATCH] config/rs6000/rs6000.c (function_arg): call to rs6000_mixed_function_arg for DFmode moved to allow normal DFmode incoming register assignment. OKed by David Edehlson. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78323 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e3f64fcbcf3..2a702bfae5d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-02-23 Fariborz Jahanian + * config/rs6000/rs6000.c (function_arg): call to + rs6000_mixed_function_arg for DFmode moved to allow + normal DFmode incoming register assignment. + 2004-02-23 Dale Johannesen * config/rs6000.md (movsf_hardfloat): Accept CTR-to-CTR copy. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index df30bcb5081..172da419dc3 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -4395,7 +4395,7 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, return NULL_RTX; if (TARGET_32BIT && TARGET_POWERPC64 - && (mode == DFmode || mode == DImode || mode == BLKmode)) + && (mode == DImode || mode == BLKmode)) return rs6000_mixed_function_arg (cum, mode, type, align_words); if (USE_FP_FOR_ARG_P (cum, mode, type)) @@ -4410,6 +4410,10 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, || (align_words < GP_ARG_NUM_REG)))) return gen_rtx_REG (mode, cum->fregno); + if (TARGET_32BIT && TARGET_POWERPC64 + && mode == DFmode && cum->stdarg) + return rs6000_mixed_function_arg (cum, mode, type, align_words); + return gen_rtx_PARALLEL (mode, gen_rtvec (2, gen_rtx_EXPR_LIST (VOIDmode, -- 2.11.0