aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/i386/i386.c6
-rw-r--r--gcc/doc/extend.texi2
3 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2ccb805..eb31d9f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2006-11-16 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_function_sseregparm): Fix comment:
+ number of arguments passed to local functions in SSE registers is 3.
+
+ * doc/invoke.texi (Function Attributes) [sseregparm]: Correct
+ number of arguments passed in SSE registers to 3.
+
2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/29201
@@ -34,8 +42,8 @@
* config/i386/i386.opt: New target option -mx87regparm.
- * config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno,
- float_in_x87: Add new variables. mmx_words, sse_words: Remove.
+ * config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno
+ and float_in_x87 variables. mmx_words, sse_words: Remove.
(X87_REGPARM_MAX): Define.
* config/i386/i386.c (override_options): Error out for
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2583fc0..4546f4d 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -2707,9 +2707,9 @@ ix86_function_sseregparm (tree type, tree decl)
return 2;
}
- /* For local functions, pass SFmode (and DFmode for SSE2) arguments
- in SSE registers even for 32-bit mode and not just 3, but up to
- 8 SSE arguments in registers. */
+ /* For local functions, pass up to SSE_REGPARM_MAX SFmode
+ (and DFmode for SSE2) arguments in SSE registers,
+ even for 32-bit targets. */
if (!TARGET_64BIT && decl
&& TARGET_SSE_MATH && flag_unit_at_a_time && !profile_flag)
{
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 099e4dd..079bc37 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -2232,7 +2232,7 @@ on the stack.
@item sseregparm
@cindex @code{sseregparm} attribute
On the Intel 386 with SSE support, the @code{sseregparm} attribute
-causes the compiler to pass up to 8 floating point arguments in
+causes the compiler to pass up to 3 floating point arguments in
SSE registers instead of on the stack. Functions that take a
variable number of arguments will continue to pass all of their
floating point arguments on the stack.