diff options
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 6 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 2 |
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. |