config/rs6000/rs6000.c (function_arg): call to rs6000_mixed_function_arg for...
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 23 Feb 2004 18:40:46 +0000 (18:40 +0000)
committerFariborz Jahanian <fjahanian@gcc.gnu.org>
Mon, 23 Feb 2004 18:40:46 +0000 (18:40 +0000)
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.

From-SVN: r78323

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index e3f64fcbcf37654085912b52fe1e465194c0964f..2a702bfae5dfa68a1d558bbbb531e511721d93f2 100644 (file)
@@ -1,3 +1,8 @@
+2004-02-23  Fariborz Jahanian <fjahanian@apple.com>
+        * 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  <dalej@apple.com>
 
        * config/rs6000.md (movsf_hardfloat): Accept CTR-to-CTR copy.
index df30bcb5081bccd3413febc1e6148dab3e42a3d1..172da419dc3f86c589be8fca62a77cefcda99858 100644 (file)
@@ -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,