From c1fa753e4264554a1dd67262d37731aee99f36be Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@bigpond.net.au>
Date: Tue, 23 Aug 2005 00:33:18 +0000
Subject: [PATCH] re PR target/23070 ([3.4 only] CALL_V4_CLEAR_FP_ARGS flag not
 properly set)

	PR target/23070
	* config/rs6000/rs6000.c (function_arg): For ABI_V4 calls to
	stdarg functions, set/clear the fp marker even when no variable
	args are passed.
	* config/rs6000/sysv4.opt (mprototype): Describe.

From-SVN: r103375
---
 gcc/ChangeLog               | 8 ++++++++
 gcc/config/rs6000/rs6000.c  | 5 +++--
 gcc/config/rs6000/sysv4.opt | 2 +-
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3663104e59c7..38e8924ed30a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2005-08-23  Alan Modra  <amodra@bigpond.net.au>
+
+	PR target/23070
+	* config/rs6000/rs6000.c (function_arg): For ABI_V4 calls to
+	stdarg functions, set/clear the fp marker even when no variable
+	args are passed.
+	* config/rs6000/sysv4.opt (mprototype): Describe.
+
 2005-08-22  Jakub Jelinek  <jakub@redhat.com>
 
 	PR rtl-optimization/23478
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 04c02c35377a..2797d5f5cca4 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4997,9 +4997,10 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode,
   if (mode == VOIDmode)
     {
       if (abi == ABI_V4
-	  && cum->nargs_prototype < 0
 	  && (cum->call_cookie & CALL_LIBCALL) == 0
-	  && (cum->prototype || TARGET_NO_PROTOTYPE))
+	  && (cum->stdarg
+	      || (cum->nargs_prototype < 0
+		  && (cum->prototype || TARGET_NO_PROTOTYPE))))
 	{
 	  /* For the SPE, we need to crxor CR6 always.  */
 	  if (TARGET_SPE_ABI)
diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt
index 2fafba23b42f..c483ea5e00ab 100644
--- a/gcc/config/rs6000/sysv4.opt
+++ b/gcc/config/rs6000/sysv4.opt
@@ -76,7 +76,7 @@ no description yet
 
 mprototype
 Target Mask(PROTOTYPE)
-no description yet
+Assume all variable arg functions are prototyped
 
 ;; FIXME: Does nothing.
 mno-traceback