aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc/extend.texi
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2006-11-15 17:21:58 +0100
committerUros Bizjak <uros@gcc.gnu.org>2006-11-15 17:21:58 +0100
commit47a37ce45e4feb8cd84a315353a2077c9fbda747 (patch)
tree764fb41a529e8c99e2fdcd06f12aed4fa7003f09 /gcc/doc/extend.texi
parentab25c2d92002803f424e096520a945d67f12616f (diff)
downloadgcc-47a37ce45e4feb8cd84a315353a2077c9fbda747.zip
gcc-47a37ce45e4feb8cd84a315353a2077c9fbda747.tar.gz
gcc-47a37ce45e4feb8cd84a315353a2077c9fbda747.tar.bz2
i386.opt: New target option -mx87regparm.
* 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. (X87_REGPARM_MAX): Define. * config/i386/i386.c (override_options): Error out for -mx87regparm but no 80387 support. (ix86_attribute_table): Add x87regparm. (ix86_handle_cconv_attribute): Update comments for x87regparm. (ix86_comp_type_attributes): Check for mismatched x87regparm types. (ix86_function_x87regparm): New function. (ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating point registers. (init_cumulative_args): Initialize x87_nregs and float_in_x87 variables. (function_arg_advance): Process x87_nregs and x87_regno when floating point argument is to be passed in 80387 register. (function_arg): Pass XFmode arguments in 80387 registers for local functions. Pass SFmode and DFmode arguments to local functions in 80387 registers when flag_unsafe_math_optimizations is set. * reg-stack.c (convert_regs_entry): Disable NaN load for stack registers that are used for argument passing. * doc/extend.texi: Document x87regparm function attribute. * doc/invoke.texi: Document -mx87regparm. testsuite/ChangeLog: * gcc.target/i386/x87regparm-1.c: New test. * gcc.target/i386/x87regparm-2.c: New test. * gcc.target/i386/x87regparm-3.c: New test. * gcc.target/i386/x87regparm-4.c: New test. From-SVN: r118859
Diffstat (limited to 'gcc/doc/extend.texi')
-rw-r--r--gcc/doc/extend.texi8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 2a1391e..099e4dd 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -2221,6 +2221,14 @@ safe since the loaders there save all registers. (Lazy binding can be
disabled with the linker or the loader if desired, to avoid the
problem.)
+@item x87regparm
+@cindex @code{x87regparm} attribute
+On the Intel x86 with 80387 @code{x87regparm} attribute causes the
+compiler to pass up to 3 floating point arguments in 80387 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.
+
@item sseregparm
@cindex @code{sseregparm} attribute
On the Intel 386 with SSE support, the @code{sseregparm} attribute